【问题标题】:ASP.NET Application Gets Slower Over TimeASP.NET 应用程序随着时间的推移变得越来越慢
【发布时间】: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


【解决方案1】:

每隔几秒刷新一堆更新面板并不是一个好主意。我能够在这里和那里优化一些东西,但最终是自动刷新让事情变慢了。使用信号器完全重新编程以获取更新,现在速度非常快。

【讨论】:

  • 还要确保正确索引数据库表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 2015-11-29
相关资源
最近更新 更多