所以我们有使用由 5 个服务器组成的 VMWare 的 VM 环境。数据库服务器,
- 数据库服务器
- 文件服务器(所有网站内容都在这里)
- 负载平衡配置中的 3 个 Web 服务器
其他注意事项:
- 应用网站使用.NET 3.5
- 使用 IIS 7.5 运行 windows server 2008 R2 Standard 的 Web 服务器
- 每个虚拟网络服务器都运行具有 4 个内核和 16GB 内存的 Xeon 2680
- 数据库服务器没问题
每个网络服务器上大约有 30 个网站,这些网站由物理负载均衡器通过循环方式进行引导。
每个单独的网站都有一个名为 SharedContent 的虚拟目录,它位于主网站文件夹之外 - 在单独的内容服务器上。
该文件夹被共享并映射为所有网站的虚拟文件夹
所以所有网站都从同一个文件夹中提取图像、预告片。目前,根文件夹中有大约 1400000 个文件,共享内容文件夹中的 7 个子文件夹中有数千个文件。
问题是,在某些情况下,所有网络服务器都会达到 100% CPU,并导致所有网站在更多请求通过时无法响应。该应用程序基于 ASP.NET 3.5,服务器开始返回 503
网站配置为使用基于 ASP.NET 文件的缓存
我们怀疑它与 SharedContent 文件夹及其中的所有文件有关。我们做了一个测试,手动将大约 30 个文件移动到共享文件夹(在所有站点中映射为虚拟目录) - 起初文件服务器达到 100% CPU(可能重新索引文件),然后这种影响级联到所有 3 个网络服务器,所有网络服务器都达到 100% CPU 并停留在那里
使网络服务器恢复正常运行的唯一方法是从资源管理器中终止具有高 CPU 使用率的进程。
我们不知道为什么会发生这种情况 - 我们正在开发一个补丁来分发该文件夹中的文件,最终将创建子文件夹并将文件移动到那里
我们不知道它背后的原因是什么?- 如果我们快速将一些文件(复制 20-30 个文件)添加到该文件夹,CPU 首先会在文件内容服务器上猛增,然后所有 Web 服务器也会一个接一个地达到 100% 的 CPU 使用率
在这些中断期间:
- 交通正常
- 操作正常 - 没有大文件突然添加到该文件夹
如果有人知道为什么会这样?还是这背后的原因?
有没有人经历过这样的事情?
更新:20/1/17
所有网站在每个网络服务器上都有自己的应用程序池。
当时在事件查看器中添加的唯一错误是请求超时。
去年 8 月,基础架构从物理环境迁移到虚拟机,从未出现过问题。
2016 年 11 月结束,3 个网站升级到 .net 4.5,其余网站仍在 .net 3.5 上。这个问题的第一个实例发生在 12 月底。
我们尝试向 SharedContent 文件夹添加另一个权限角色,在高峰期将其提升到 100% CPU。我们不得不取消手术。
交通很正常。
SharedContent 被配置为映射驱动器。