【发布时间】:2010-10-18 17:38:13
【问题描述】:
我的网站一直存在问题,它基本上会超时并死掉。我现在已经到了必须将应用程序池设置为每 5 分钟自动回收一次的地步,但即使这样也失败了,因为我刚下班回来,我的电子邮件收件箱里满是 4000 封相同的电子邮件错误。
System.Data.SqlClient.SqlException:超时已过期。在操作完成之前超时时间已过或服务器没有响应。
今天早上我尝试了一个测试,我在连接字符串上禁用了池,这也没有用。
现在我在想,这可能不是连接泄漏的问题,我以前经历过所有这些,我认为这可能与我网站的核心静态属性有关
这是其中之一
public static List<Member> AllMembers
{
get
{
if (HttpRuntime.Cache["Members"] != null)
{
return (List<Member>)HttpRuntime.Cache["Members"];
}
else
{
GetAllMembers();
return (List<Member>)HttpRuntime.Cache["Members"];
}
}
}
每当我想要一个成员列表时都会调用它,你可以看到如果它为 null 则填充缓存,它将使用数据库,如果它不为 null 则返回缓存对象。我也有 SQLCacheDependancy,它将清除这些缓存对象,以便再次填充它们。所以这个属性被称为 ALOT。
现在这是一个网络应用程序,随着我的流量一直在增加,
我的财产可能是原因吗?
非常感谢任何帮助
真吉利
【问题讨论】:
-
查看 GetAllMembers() 的代码比查看属性更有用
-
您是否尝试在压力下监控您的应用程序的内存使用情况?您是否检查 MS SQL 上发生的情况并对其进行监控?你如何诊断哪里有问题?或者您只是尝试猜测问题可能出在哪里?
标签: c# performance properties timeout thread-safety