我正在开发一个 POS 应用程序,它在每台 POS 计算机上都有一个本地数据库,并使用 IIS 中托管的 WCF 与服务器通信。该应用程序已经在多个客户中部署了一年多。
大约一周前,我们开始收到一位客户的报告,称托管 IIS 的服务器非常慢。当我检查了这个问题时,我看到应用程序池和我的进程在 8 cpu 服务器上几乎达到了 100% cpu。
我检查了 SQL 活动监视器和网络容量,它们没有显示超出我们通常看到的明显过载。
在 Process Explorer 中检查线程时,我看到很多线程重复调用 CreateApplicationContext。根据我在网上找到的一些帖子,我尝试安装.Net 2.0 SP1,但它并没有解决问题并将函数调用替换为CLRCreateManagedInstance。
我即将使用 IIS 进程的 adplus 和 windbg 捕获转储,并尝试找出问题所在。
有没有人遇到过这样的事情或者知道我应该检查哪个目录?
ps 相同版本的应用程序部署在另一个客户中,并且工作正常。我还尝试回滚版本(甚至是非常旧的版本),它的行为仍然完全相同。
编辑:好吧,问题解决了,原来我在那里有一个不限制结果集的 SQL 查询,当客户经过一定数量的行时,它开始让服务器陷入困境。我花了两天时间才找到它,因为日志中的所有周围噪音,但我等了一夜然后转储,它立即向我显示了查询。