我的服务器上有一个 MS SQL Server 实例。
运行select * from sys.columns
需要 00:00 秒。(仅作为示例,大多数查询都有相同的问题)
当我运行相同的查询时SSMS
,它需要30秒以上,有时甚至需要几分钟。
有趣的是:前大约 500-600 行立即返回,然后其余行缓慢返回。
这个问题今天才开始出现。
我尝试过的:
- 我关闭了客户端电脑上的卡巴斯基
- 我关闭了 opendns
- 我重启了两台电脑
- 关闭了大多数应用程序与数据库的连接
- 我检查了活动监视器,没有发生什么重大事件
- 客户统计数据并没有显示太多信息
问题仍然存在
在服务器上,它始终是 0 秒,在局域网上,大约一分钟
此外,我通过 SSMS 从我的客户端电脑连接到海外的远程服务器,也是 0 秒
似乎只存在于这里的电脑和服务器之间
这可能是什么问题?我应该去哪里查找?
更新 2 天前我请了一位技术人员,工作了一段时间,重启了一些东西,昨天一切正常。今天问题又出现了
我尝试断开所有客户端电脑与数据库的连接(关闭所有连接到数据库的应用程序),然后再次运行查询。同样需要大约 35 秒
更新2
大家好。我又遇到了同样的问题。不过现在更奇怪了,因为我在全新安装 Windows 10 的客户端电脑上也遇到了这个问题。没有自定义防火墙/防病毒软件或类似的东西。
我尝试过的:
我意识到服务器的 DNS 地址指向 OpenDns,由于我不再使用它,我将服务器切换为 10.0.0.138/8.8.8.8。这没什么帮助。
我手动将条目添加到服务器的 Hosts 文件中(例如 10.0.0.1 MyClient 等)。这在 SSMS 中从 MyClient 到 MyServer 产生了巨大差异,但并没有完全解决问题。含义:
- 大多数查询现在都会立即返回,但并非全部。
nslookup MyClient
仍然出现相同的错误(google-public-dns-a.google.com can't find MyClient: Non-existent domain
)- FWIW ping MyClient 立即返回到服务器上,没有任何问题
- 使用 Entity Framework 的 .net 应用程序仍需要大约 30 秒才能返回相同的查询,而在同一台机器上 SSMS 只需 0 秒即可返回
如果可能的话,我不介意完全禁用 SQL Server 上的 nslookup。我不需要它。但到目前为止,我找不到任何这样的选项。
还能做什么?
谢谢!
答案1
这有点猜测(因为可能是多种原因),但可能是由于服务器上的某种原因,客户端 IP 的反向 DNS 查找超时。快速测试是查看nslookup <client IP>
解析需要多长时间,或者将客户端 IP 添加到服务器主机文件条目并测试查询。