【发布时间】:2017-09-25 21:01:07
【问题描述】:
我正在运行一个 .NET C# (4.5) Web 表单应用程序,并且在我们的生产服务器上,随着时间的推移,每个人的应用程序都会变得越来越慢,直到大约一个小时后它变得几乎无法使用,我们只需重新启动服务器。
它在我的本地机器上运行良好。永远不会变慢。所以我正在尝试思考会有什么不同。
我的本地机器连接到同一个数据库。还有一些活动目录用于登录,但它们也连接到我的本地和生产环境中的同一位置。
我已经在 web.config 中调试了。我还查找了几乎所有其他解决方案,但都没有运气。
我确实看到了一些关于使用 ajax 请求构建视图状态的内容。我确实有一个带有更新面板的页面,每隔几秒就会刷新一次,但我很困惑为什么生产服务器会随着时间的推移而变慢,而不是我的本地机器测试。
目前也只有大约 10 人在使用该应用程序。有什么想法吗?
【问题讨论】:
-
您在解决方案中使用 Linq 吗?
-
这可能是由于内存泄漏,可能值得分析这些内存使用情况。事件订阅者可能是生产中机器学习的罪魁祸首,而您在开发机器上却没有。不过,通常需要一个多小时才能成为真正的问题。
-
可能值得分析您的应用程序(如果这在生产中可行)以缩小问题范围(即 SQL Server 分析、IIS 跟踪/请求日志记录)。也许还有客户端分析。 RedGate 的 ANTS profiler 之类的工具也可以 - 可以想象 - 用于生产(这非常适合此目的)。在理想情况下,您不会因为开销而对生产应用程序进行分析,但听起来您并没有什么可失去的……
-
@johnjerrico 是的,我在一些列表上使用 LINQ。 var stores = from item in LB_Stores.Items.OfType
() where item.Selected select item.Value; -
这可能是内存泄漏或未优化(未索引表)查询(存储过程)。如果您的应用程序允许从不同的用户发送不同的参数范围,那么可能有用户正在请求非常大范围的数据。 (当您说您重新启动服务器时)您是否尝试重新启动 App-Pool (大概您正在使用专用的 App-pool )。检查以查看数据库服务器的资源使用情况
标签: c# asp.net performance iis