【发布时间】:2015-01-29 00:26:52
【问题描述】:
服务器规格
Microsoft Windows Server 2003 企业版 SP2
IIS 6
.net4
英特尔(R) 至强(R) CPU X5680 @ 3.33GHz,2.00GB RAM 物理地址扩展
我无法找到服务器随机停机的原因。我们的客户告诉我们,他们的网站一次宕机数小时。有时用户可以登录,但该网站非常缓慢/不稳定且无法使用。有时用户根本无法登录。当用户能够登录时,并非所有图像都会显示(他们得到的图像未找到图像)。
我们将他们的网站从 .net1 升级到 .net4,因为我们认为他们停机和随机用户注销的原因是他们在 .net1 上运行他们的网站。该网站运行良好,几个月没有出现任何问题。
在那之后服务器第一次开始宕机是由于网站所在的驱动器磁盘空间不足。此驱动器有 40GB 分区,并添加了 20GB。这并没有解决很长时间的问题。
服务器第二次随机关闭时,我在事件查看器中注意到,与网站使用的应用程序池关联的 Web Worker 将定期需要被回收。也就是说,在事件查看器的“安全”选项卡中,我会定期看到一个 ID 为 1074 的事件,内容为“一个进程 ID 为 1540 的工作进程为应用程序池“Net4”提供服务,因为工作进程已达到其允许的处理,所以请求回收时限。'。然后我进入这个应用程序池的属性,看到应用程序池每 29 小时会被回收一次,这是默认设置。我对此进行了修改,以使应用程序池在每天凌晨 3:00 回收。从那以后,我们还没有在事件查看器中看到此事件。在更改并手动回收应用程序池之前,我们能够在其停机时间之一捕获该网站。这解决了这一实例中的问题。
然而,这并没有永久解决问题,因为我们仍然收到来自客户的电子邮件,通知我们网站一次关闭数小时。
然后我设置了性能监视器计数器日志。我们已经设法在许多此类停机期间监控服务器的性能。它似乎不是内存问题,因为驱动器上有足够的空间。它似乎不是内存泄漏或与过度分页有关,因为没有占用过多 % Processor Time 的正在运行的进程,并且在大多数停机时间期间,Pages/Second Memory 计数器不会以过多的量达到峰值(稍后我会解释为什么会出现过多的分页)。总 IO Data Bytes/sec 和 IO Other Data Bytes/sec Process 计数器在停机期间通常不会出现高或低。在此期间,总线程计数和处理计数进程计数器未出现任何异常峰值或下降。在给定时间,总线程数似乎在 600 到 900 之间,无论是给予还是接受。在给定时间,总句柄数似乎在 15,000 到 23,00 之间,给予或接受。例如 w3wp 在 Jit .NET CLR jit 计数器中的 % Time 大约有一半时间为 0,另一半将随机达到近 100 峰值,大部分时间峰值只有片刻,但很少峰值大约 10 分钟,无关到停机时间。
一天中有随机时间,进程 dsmcsvc 占用了大部分(如果不是全部)处理器时间百分比。这是由 Symantec Antivirus 软件运行的进程。当此进程占用 % Processor Time 时,事件查看器中会出现一个相应的事件,表示已上传了一个新的病毒定义文件,即 ID 为 7 的应用程序事件“新病毒定义文件已加载”。版本:#版本号#'。发生此事件时,Pages/Sec 计数器会出现峰值。有时它会飙升至仅 200-300,但有时会超过 10,000。此事件似乎与网站停机时间完全无关。我研究了 Symantec Antivirus 软件,发现该软件的旧版本存在已知的内存泄漏。我发现当一个名为 NavLogon.exe 的进程的链接被破坏/不存在时,这个软件会导致高内存使用。服务器上似乎不存在此过程,因此我目前无法恢复到它的链接。我还发现该软件使用 Crypt32.dll 并且旧版本的 Crypt32.dll 存在已知的内存泄漏。服务器上存在的 Crypt32.dll 最后一次更新是在 2007 年。
性能监视器日志监视总 Sessions Active ASP.Net Applications 计数器。在停机期间,会话总数没有表现出任何异常行为,在此期间有正常数量的活动会话。给定时间的活跃会话可以在 0 到 200 之间。我被告知,大多数用户活跃的时间是在第一班,但是在每天晚上 10 点和凌晨 2 点左右,这个数字会达到峰值。
该站点运行 JavaScript 客户端和 Visual Basic.net 服务器端。所有用户几乎一直都有大约 10-15 个会话变量。
当站点出现故障时,事件查看器中似乎没有与其停机时间相对应的事件。
我还为此站点设置了 W3C 扩展日志文件格式日志。在停机期间,Telerik.RadUploadProgressHandler.ashx 的 GET 请求似乎过多。
在这一点上,我已经严重耗尽了想法,并在网上广泛搜索了解决方案,但结果却一无所获。任何关于为什么会发生这种情况的反馈都会很棒。
【问题讨论】:
标签: asp.net vb.net .net-4.0 windows-server-2003