两周以来,我们的一个网站出现了问题,在“高峰时间”(Analitycs 实时显示约 170-200 人)它消耗了所有可用内存 (16GB)。正常状态是在 2-3GB 之间分配。内存增长不是恒定的,有时非常迅速,例如 4-16 GB/2 分钟,有时增长是渐进的。这种行为在我们的两台服务器(Server1 和 Server2)上看起来都是一样的。
服务器配置:
公共 Internet 和实际应用程序服务器之间的流量由 haproxy 处理,当前所有流量都定向到 Server1,如果 Server1 停止响应,流量将转到 Server2(主动备份配置)。网站数据库(MSSQL 2008 R2)放置在 Server3 上。在媒体服务器上,我们存储来自应用程序虚拟 /media 文件夹的所有文件。该服务器由 Linux 驱动,这里没有问题。
Server1、Server2、Server3 是放置在一台物理机器上的 VM(Linux Debian KVM,来自 backports 的最新版本的 libvirt,机器非常稳定,尤其是 DB 服务器)。媒体服务器是物理存储机器。
服务器1:
- 操作系统 – Windows Server 2012 标准
- CPU – 8x2GHz
- 内存 -16GB
- IIS8
服务器2:
- 操作系统 – Windows Server 2008 Web
- CPU – 4x2GHz
- 内存 – 4GB
- IIS7
两台服务器的共同点:
网站基于 Umbraco 4.7、.net 4.0。媒体文件夹作为“网络位置”连接,物理放置在媒体服务器(Linux Samba 3.x)上。在数据库中,我们有大约 25000 个节点。
我们观察到该网站大量使用与媒体服务器的连接(高达 200Mbit/s)。
我们已更改 URL,以便媒体请求不再通过 IIS。网站在 Windows Server 2008 和 Windows Server 2012 之间移动,但问题仍然存在。
我们认为问题出在代码上,所以我们回滚了自上个月以来的所有更改(使用我们的代码存储库),但这并没有解决问题。
我们已经使用过 DebugDiag 和 Ants Memory Profiler 等程序
http://imageshack.us/a/img823/8151/p4performancemonitor.png http://imageshack.us/a/img838/2319/p4tasks.png
我们还能如何检查问题出在哪里?