【发布时间】:2017-06-03 16:40:32
【问题描述】:
所以我们有使用由 5 个服务器组成的 VMWare 的 VM 环境。 数据库服务器,
- 数据库服务器
- 文件服务器(所有网站内容都在这里)
- 负载平衡配置中的 3 个 Web 服务器
其他说明:
- 应用网站使用.NET 3.5
- 使用 IIS 7.5 运行 windows server 2008 R2 Standard 的 Web 服务器
- 每个虚拟网络服务器都运行具有 4 核和 16gb ram 的 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 使用率
在这些中断期间:
- 交通正常
- 操作正常 - 没有突然将大文件添加到该文件夹中
如果有人知道为什么会发生这种情况?还是这背后的原因?
有没有人经历过这样的事情?
更新:2017 年 1 月 20 日
所有网站在每个网络服务器上都有自己的应用程序池。
当时添加到事件查看器中的唯一错误是请求超时。
去年 8 月,基础架构从物理环境迁移到虚拟机,从未出现过问题。
2016 年 11 月结束,3 个网站升级到 .net 4.5,其余网站仍在 .net 3.5 上。 此问题的第一个实例发生在 12 月底。
我们尝试向 SharedContent 文件夹添加另一个权限角色,在高峰期将其提高到 100% CPU。我们不得不取消操作。
交通正常。
SharedContent 被配置为映射驱动器。
【问题讨论】:
-
您在应用程序的某处出现内存泄漏。
-
是一个特定的工作进程达到 100% CPU 吗?此外,虽然技术上可行,但我在单个文件夹中存储大量文件时遇到了问题,是否可以将 140 万个文件分解到不同的文件夹中。此外,我可以想象,由于所有内容都来自 1 个内容服务器,这可能会给该框以及内容框与 Web 服务器本身之间的“网络”带来很大压力?
-
它发生在所有网站进程中。它似乎级联到所有 3 个网络服务器并导致它们全部达到 100%。是的。所有内容都存储在文件服务器上,网络服务器只是映射到它。 Sharedcontent 文件夹位于主网站文件夹之外。我不明白它是如何级联到所有 3 个网络服务器的?虚拟机之间的内部链接是 1gigabit。
标签: asp.net iis vmware cpu-usage window-server