Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的网站经常冻结?_C#_Asp.net_Sql_Sql Server - Fatal编程技术网

C# 为什么我的网站经常冻结?

C# 为什么我的网站经常冻结?,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,这是一个相当模糊的问题,得到答案似乎是一个漫长的过程,但我不知道还能做什么 自从我让我的网站活了以后,它就会时不时地冻结。你点击一个链接,浏览器就会出现在那里,看起来就像是在尝试连接。似乎冰冻可以持续2分钟左右,然后一切都很好。然后过一会儿,它会做同样的事情 我在日志文件中跟踪网站上发生的所有异常 我经常听到这些 超时已过期。操作完成前的超时时间或服务器没有响应 堆栈跟踪显示它导致了某种连接到数据库的方法 我假设冻结与超时问题有关。我的网站托管在一个共享服务器上,我的数据库也在其他服务器上,还有

这是一个相当模糊的问题,得到答案似乎是一个漫长的过程,但我不知道还能做什么

自从我让我的网站活了以后,它就会时不时地冻结。你点击一个链接,浏览器就会出现在那里,看起来就像是在尝试连接。似乎冰冻可以持续2分钟左右,然后一切都很好。然后过一会儿,它会做同样的事情

我在日志文件中跟踪网站上发生的所有异常

我经常听到这些

超时已过期。操作完成前的超时时间或服务器没有响应

堆栈跟踪显示它导致了某种连接到数据库的方法

我假设冻结与超时问题有关。我的网站托管在一个共享服务器上,我的数据库也在其他服务器上,还有大约10亿个其他数据库

但即使是在共享服务器上,这种冻结问题也会一直发生。这太烦人了。考虑到我的网站是以电子商务为基础的,人们在上面做交易,我可以看到这是一个相当灾难性的问题。我最不想看到的是,当我的用户点击“提交付款”按钮时,网站被冻结,然后导致他们一次又一次地点击“提交付款”按钮,因为网站被冻结,然后信用卡被额外收费10次


有人对处理这个问题的最佳方法有什么建议吗?

我猜这与数据库连接有关。检查他们是否被正确释放?如果没有,那么它将把它们都用光


还要检查数据库是否配置了连接池。

我猜这与数据库连接有关。检查他们是否被正确释放?如果没有,那么它将把它们都用光


还要检查数据库是否配置了连接池。

超时错误肯定是冻结页面的原因。发生这种情况时,页面将等待数据库连接一分钟,然后返回错误消息。由于web服务器一次只处理来自每个用户的一个页面,因此在出现超时错误之前,整个站点似乎都会被冻结。即使这种情况偶尔只发生在少数用户身上,对他们来说也是相当严重的,因为他们一分钟左右都无法访问该网站

问题到底有多严重取决于你犯了多少错误。从你的描述来看,听起来你有点太多了

确保所有数据读取器、命令对象和连接对象都得到了正确的处理,这样就不会让连接保持打开状态


还要在日志中查找死锁错误,因为它们可能导致超时。如果您有相互锁定的查询,您可以通过更改它们使用表的顺序来改进它们。

超时错误肯定是冻结页面的原因。发生这种情况时,页面将等待数据库连接一分钟,然后返回错误消息。由于web服务器一次只处理来自每个用户的一个页面,因此在出现超时错误之前,整个站点似乎都会被冻结。即使这种情况偶尔只发生在少数用户身上,对他们来说也是相当严重的,因为他们一分钟左右都无法访问该网站

问题到底有多严重取决于你犯了多少错误。从你的描述来看,听起来你有点太多了

确保所有数据读取器、命令对象和连接对象都得到了正确的处理,这样就不会让连接保持打开状态


还要在日志中查找死锁错误,因为它们可能导致超时。如果您有相互锁定的查询,您可以通过更改它们使用表的顺序来改进它们。

检查SQL Server日志,尤其是死锁


如果有多个连接打开,其中一个可能正在等待另一个锁定的行。

检查SQL Server日志,特别是死锁

如果有多个连接打开,其中一个可能正在等待另一个锁定的行

超时已过期。操作完成前的超时时间或服务器没有响应

这是一个Sql命令超时异常-如果数据库处于加载状态,这可能有点常见。确保您正在处理SqlConnections和SqlCommands,尽管这通常会导致池超时异常(无法从连接池检索连接)

很可能有人运行的查询调优不好,或者占用了资源。它可能是您的站点,但由于您位于共享数据库服务器上,所以它也可能是其他人的站点。它也可能是阻塞或打开事务-因为这些事务将在数据库中,这将是一个编码问题。您可能需要让您的主机提供商参与进来,以跟踪它或移动到专用的db服务器

您可以减少SqlCommands的CommandTimeout—我知道这听起来有点违反直觉,但我经常发现,提前失败要比尝试60秒在服务器上增加负载要好。如果你的.5秒的查询没有在5秒内完成,那么很有可能也不会在60秒内完成

或者,如果您是患者类型,您可以增加CommandTimeout,但也有90秒的IIS超时,如果您增加太多,您需要修改它

超时已过期。操作完成前的超时时间或服务器没有响应

这是一个Sql命令超时异常-如果数据库处于加载状态,这可能有点常见。确保您正在处理SqlConnections和SqlCommands,尽管这通常会导致