数据绑定期间IIS上100%的CPU利用率

时间:2015-08-30 13:15:18

标签: asp.net iis data-binding

我们即将推出一个拥有12,000-15,000活跃用户的网站(大约2000个并发用户)。在性能测试期间,我们遇到了一些CPU瓶颈,最后我们有一个非常简单的aspx页面,我们可以按如下方式重现这个问题。

<%@ Page Language="vb" AutoEventWireup="false" Inherits="System.Web.UI.Page" trace="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    Sub pp(ByVal s As Object, ByVal e As EventArgs) Handles MyBase.Load
        If Page.IsPostBack Then Exit Sub
        Dim lst As New List(Of String)
        For I = 1 To 10
            For Each c As Control In Me.Form.Controls
                lst.Add(c.ID)
            Next
        Next
        'r1.DataSource = Lst
        'r1.DataBind()
    End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div><asp:Button ID="b1" Text="Button" runat="server"/>
        <asp:Button ID="Button5" Text="Button" runat="server"/>
        <asp:Button ID="Button6" Text="Button" runat="server"/>
        <asp:Button ID="Button7" Text="Button" runat="server"/>
        <asp:Button ID="Button8" Text="Button" runat="server"/>
        <asp:Button ID="Button9" Text="Button" runat="server"/>
        <asp:Button ID="Button10" Text="Button" runat="server"/>
        <asp:Button ID="Button11" Text="Button" runat="server"/>
        <asp:Button ID="Button12" Text="Button" runat="server"/>
        <asp:Button ID="Button13" Text="Button" runat="server"/>
        <asp:Button ID="Button14" Text="Button" runat="server"/>
        <asp:Button ID="Button15" Text="Button" runat="server"/>
        <asp:Button ID="Button16" Text="Button" runat="server"/>
        <asp:Button ID="Button17" Text="Button" runat="server"/>
        <asp:Button ID="Button18" Text="Button" runat="server"/>
    <asp:Repeater ID="r1" runat="server">
        <ItemTemplate>
            <%#DataBinder.Eval(Container, "DataItem")%>
        </ItemTemplate>
    </asp:Repeater>
    </div>
    </form>
</body>
</html>

注意:

  • 这是一款双核试验机。
  • 这是一个WebForms应用程序。
  • 根本不使用内存(使用2GB的32GB。)
  • 禁用输出缓存。 (是开放是后备选项。)
  • 是的,IIS wp正在使用100%的CPU。
  • 它不处于调试模式。
  • 我们正在使用ab(Apache bench)进行负载测试。 (它与tinyget一样。)
  • 卸载页面跟踪(trace="true")以0.3秒完成,包括渲染。
  • 当ab请求命中服务器时,页面跟踪在0.7秒内完成,但实际页面返回浏览器需要8秒。
  • 不,它不是网络带宽(同一网络上的负载运行器和服务器,网络利用率仍为1.4%。
  • 请求不等待IIS请求队列。 (与PerfMon一起检查。)
  • DebugDiag完整转储未发现任何相关问题。
  • ab -n8000 -c500 urlofthepage.aspx
  • 上面的负载,cpu立即达到100%,我们可以处理154req / sec。

每秒请求数:154.13 [#/ sec](平均值)

当我们增加CPU核心时,这个数字会增加,但仍然是100%利用

如果我们注释掉以下数据绑定语句的响应完全不同:

r1.DataSource = l
r1.DataBind()

每秒请求数:2510.95 [#/ sec](平均值)

我们被困住了。欢迎任何建议。

0 个答案:

没有答案