javascript - IIS 连接过载和 CPU 运行高
问题描述
我们的服务器上有一个由 iis 托管的 MVC 5 网站,但我们在网站中的一项功能遇到以下问题。
我们有一个数据表,其中填充了来自 SQL 数据库的数据。对于每条记录,都会创建一个复选框,供用户检查和链接该记录。检查并链接记录后,该特定记录将存储在链接表中。请参阅下面的代码以了解此功能。对于每条记录,我在服务器端调用一个方法并执行存储的过程。
javascript
$("#btnLinkTest").click(function () {
var counter = 0;
var checked_checkboxCounter = 0;
$('#counter').text("0 linked");
$('#linkModal').modal('show');
var oTable = $("#StudentListTable").dataTable();
$(".cbxLink:checked", oTable.fnGetNodes()).each(function () {
checked_checkboxCounter = checked_checkboxCounter + 1;
var currentRow = $(this).closest("tr");
var data = $('#StudentListTable').DataTable().row(currentRow).data();
var ER, AC;
var StudentID = data['StudentID'];
var TestID = $('#lblGradeID').html();
var ET = $(this).closest('tr').find(".extraTime").val();
if ($(this).closest('tr').find(".cbxER").is(':checked')) {
ER = "True";
} else {
ER = "False";
}
if ($(this).closest('tr').find(".cbxAC").is(':checked')) {
AC = "True";
} else {
AC = "False";
}
var jsObject =
{
StudentID: StudentID,
TestID: TestID,
ModifiedBy: "1",
ElectronicReader: ER,
Accomodation: AC,
StudentExtraTime: ET
};
$.ajax({
type: "POST",
url: "/Administration/LinkTestToStudent_Ins/",
data: JSON.stringify(jsObject),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
counter = counter + 1;
$('#counter').text(counter + " / " + checked_checkboxCounter );
},
failure: function (response) {
alert(response.d);
},
error: function (response) {
alert(response.d);
}
});
});
return false;
});
C#
public string LinkTestToStudent_Ins(string StudentID, string TestID, string ModifiedBy, string ElectronicReader, string Accomodation, string StudentExtraTime)
{
string result;
DataBaseConnection dbConn = new DataBaseConnection();
using (SqlConnection con = dbConn.SqlConn())
{
try
{
con.Open();
SqlCommand cmd = new SqlCommand("StudentTestLink_ins", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@StudentID", StudentID);
cmd.Parameters.AddWithValue("@TestID", TestID);
cmd.Parameters.AddWithValue("@ModifiedBy", HttpContext.Current.Session["UserID"]);
cmd.ExecuteNonQuery();
con.Close();
return result = "Linked";
}
catch (Exception ex)
{
return "Connection Error";
}
}
}
问题是,例如,如果我们链接超过 100 条记录,则服务器上的连接会增加很多(在这种情况下为 100),并且由于 IIS Worker 的存在,cpu 几乎以 100% 的速度运行。我怀疑这种情况正在发生,因为 javascript 代码一次为所有检查的记录调用了 c#。
请告知我如何优化此代码,以免出现上述问题。可能我可以一次调用一个 c# 方法,而不是一次调用所有方法。
解决方案
推荐阅读
- sql - 在不使用临时表的情况下优化查询并优化用户体验
- validation - 带有附加组件的 Google G-Suite 表单上的自定义验证
- sql - 如何在sql中查询123 *具有给定前缀的所有内容?
- visual-studio-code - 在 VSCode 中打开 csproj 时,OmniSharp 抛出错误
- apache - 原始的 httpd-vhosts.conf 是什么样的?
- php - ajax 调用仅显示每个循环中第一项的输入值。需要它根据按钮单击的上下文显示
- haskell - 用于从标准概率分布中采样的 Haskell 包
- php - 在 PHP 中调用 require_once 后,Echo 不起作用
- r - 基于因子循环多个绘图对象
- python - 如何将 python 列表发布到 django