【发布时间】:2014-09-01 00:03:06
【问题描述】:
我有 8 个应用程序 (VB.NET) 我的服务器运行 SQL Server 2008 R2。每个应用程序都有一个数据库。应用程序在一台服务器上,而数据库在另一台服务器上。
只是为了让你知道:
服务器数据库平均占用 30% 的 CPU,应用服务器平均占用 60% 的 CPU。
2 台具有相同配置的服务器。基本配置:
- 8CPU
- 30GB 内存
- Windows Server 2008 R2
我们使用 NewRelic 24 小时监控系统。还有一个大问题:NewRelic 总是指向由“System.Web.HttpApplication.BeginRequest()”引起的减速。
在第二张图中,我们可以看到问题是:“应用程序代码(System.Web.HttpApplication.BeginRequest())”
我在互联网上搜索了很多,发现可能与“sessionState”有关。我使用“StateServer”所有八个应用程序。 (使用“StateServer”的原因是应用程序会更快。)
按照“sessionState”配置:
<sessionState
cookieless="UseCookies"
cookieName=".authz"
mode="StateServer"
regenerateExpiredSessionId="true"
stateConnectionString="tcpip=127.0.0.1:42424"
timeout="20"
useHostingIdentity="true" />
在任何地方,我将对象放在会话中,我都使用“Serializable()”。示例:
<Serializable()> Public Class Example
无论如何,我想向你们解释一下情况。我该怎么做才能让它更快并解决这个问题?谢谢
【问题讨论】:
-
好吧,深入了解实际运行的代码。显然,BeginRequest 调用了其他需要这么长时间的方法。认为 BeginRequest 本身执行了 150 毫秒是没有意义的。找出运行的代码。
标签: vb.net sql-server-2008 httpwebrequest session-state newrelic