我们已经看到这个问题一段时间了,我真的试图围绕导致它的原因。经历了SQL Server“超时”和“SQL Server不存在或访问被拒绝”的经典ASP应用程序
一天几次我们会看到网页开始投掷的时间段[微软] [ODBC SQL Server驱动程序]超时过期“然后不久后页面开始投掷”[Microsoft] [ODBC SQL Server Driver] [ DBNETLIB] SQL Server不存在或访问被拒绝。“
我们有很多不同的应用程序连接到这个数据库服务器。它平均每秒平均有大约2500次并发连接处理。我们的大多数应用程序没有任何问题,问题似乎只发生在Web服务器上。 (也许它与连接池有关?)
我不知道该怎么解决这个问题。有问题的SQL服务器对于它所做的工作极其不满,并且配备了每个处理器的许可。所以我不认为我们正在考虑许可/性能问题。
我想也许是IP连接问题,所以我改变了ConnectionString使用IP地址并运行一些长时间ping。我在Web服务器和数据库服务器之间丢失了0个数据包。
的ASP连接字符串现在看起来是这样的:
Provider=MSDASQL; Driver={SQL Server}; Server=10.0.100.100; Database=DBName; UID=WebUserName; PWD=WebUserPassword; ConnectionTimeout=15; CommandTimeout=120;
用户使用的是SQL Server身份验证连接非域用户。所以我不认为这是一个与域相关的问题。我检查了SQL服务器的日志文件,并没有发现与事件相关的任何内容。
我找到描述类似行为的another stackoverflow question,但没有解析。
的详细信息:
- 的Web服务器:Windows 2003 SP2标准,IIS 6
- 数据库服务器:Microsoft SQL Server的9.0.4035
有没有人见过/解决这类型问题?有没有人有任何建议,我应该看看下一步?
谢谢!
-Zorlack
编辑
谁能告诉我最好的做法是什么经典的高负荷ASP执行SQL查询?我们是否想要尝试利用连接池?
在看代码,相当多的是这样的:
Set objCn = Server.CreateObject("ADODB.Connection")
objCn.Open(Application("RoConnStr"))
'do some stuff
objCn.Close
Set objCn = Nothing
溶液(每斯科特的建议)描述
This article,一个发球,我的问题。我做了注册表更改,然后重新启动服务器。
问题解决了!
谢谢,我也有这个问题。 虽然它看起来像连接池是红色的鲱鱼。当我使用和不使用连接池进行测试时,服务器仍然创建了数千个处于TIME_WAIT状态的TCP连接。 看起来连接池允许您重新使用连接对象,但这些连接对象有时会在服务器之间创建许多新的TCP连接。 – 2011-06-13 11:11:51