我们正在运行一个程序,每个实例在上创建4-5个进程。当进程数量超过230个时,程序停止工作,每隔几分钟就崩溃一次( server日志显示“由于大量的工作线程在ASYNC_NETWORK_IO上等待,node0上的所有调度程序似乎都处于死锁状态。进程利用率: 0%")。当发生这种情况时,我们的解决方案是扼杀sql服务器上的进程,这不会导致任何其他问题,但我们希望永久解决这个问题。我们如何才能解决根本问题?或者,如果只有有问题的应用程序的开发人员才能这样做,那么我们有什么可能创建一个解决方案(例如,这些过程的超时?)
发布于 2010-12-01 14:33:25
看看这是否有用:http://blogs.msdn.com/b/psssql/archive/2008/09/03/how-it-works-17888-all-schedulers-on-node-appear-deadlocked.aspx
发布于 2010-12-01 16:00:15
如果您的程序在SQL实例上创建了5个连接,并且在该实例上看到230个繁忙的工作人员,这意味着至少有46个程序副本。这些都在同一个工作站上运行吗?IIRC,默认的工人人数是255,很可能你会遇到这样的情况。其中一个后果是客户端的登录时间很长。根据应用程序的不同,登录超时可能导致崩溃,长时间运行的查询也可能导致崩溃。
ASYNC_NETWORK_IO意味着Server正在等待客户端应用程序从Server读取数据。也许您已经饱和了工作站上的网络连接,甚至服务器上的网络连接?
服务器中有什么样的网络硬件?它是一个多核服务器吗?
https://serverfault.com/questions/207834
复制相似问题