Итак, у нас есть среда VM, использующая VMWare, состоящую из 5 серверов. сервер базы данных,все веб-сайты на веб-серверах на 100%
- Database Server
- File Server (все содержание сайта здесь)
- 3 WebServers в конфигурации балансировки нагрузки
Другие ноты:
- Веб-сайт приложения использует .NET 3.5
- WebServers под управлением Windows Server 2008 R2 Standard с IIS 7.5
- Каждый виртуальный веб-сервер работает Xeon 2680 с 4 ядрами и 16gb барана сервер
- Database отлично
Есть около 30 сайтов на каждом веб-сервере, который направлено с помощью физического балансировочного балансира через циклический ровин.
На каждом отдельном веб-сайте есть виртуальный каталог SharedContent, который находится за пределами основной папки веб-сайта - на отдельном сервере содержимого.
, что папка является общей, и отображается в виде виртуальной папки для всех сайтов
Таким образом, все сайты тянуть изображения, трейлеры из той же папки. В настоящее время в корневой папке находится около 1400000 файлов и пару тысяч в 7 подпапках в папке общего содержимого.
Проблема в том, что в некоторых случаях все веб-серверы идут на 100% -ный процессор и заставляют все веб-сайты не реагировать по мере поступления большего количества запросов. Приложение основано на ASP.NET 3.5, сервер начинается возвращение 503
сайтов настроены на использование ASP.NET File Caching на основе
Мы догадывались, что-то делать с папкой SharedContent и все файлы в нем. Мы выполнили тест по перемещению 30 файлов в общую папку (отображаемую как виртуальный каталог на всех сайтах) вручную - сначала файловый сервер достиг максимума до 100% CPU (возможно, переиндексируя файлы), тогда этот эффект каскадировался на все 3 веб-сервера , все веб-серверы попали на 100% процессор и остались там
Единственный способ вернуть веб-серверы к функциям - это процесс уничтожения с высоким использованием процессора от диспетчера ресурсов.
мы не знаем, почему это происходит - мы работаем над патчем для распространения файлов в этой папке, которая будет в конечном итоге создать вложенные папки и перемещать файлы там
, что мы не знаем, что такое причина этого?- если мы добавим несколько файлов (скопировав 20-30 файлов) в эту папку быстро, процессор сначала запустится на сервере содержимого файла, а затем один за другим все веб-серверы также начнут снимать до 100% использования ЦП
во время этих отключения:
- трафик был нормальный
- операции были нормальными - не огромные файлы вдруг добавляются в эту папку
если кто имеет какие-либо идеи, почему это происходит? или причина этого?
Кто-нибудь испытал что-нибудь подобное раньше?
обновление: 20/1/17
Все сайты имеют свой собственный пул приложений на каждом веб-сервере.
Единственными ошибками, которые были добавлены в средстве просмотра событий в то время, были таймауты запроса.
Инфраструктура была перенесена с физической среды на виртуальные машины в августе прошлого года и не имела проблемы.
В конце ноября 2016 года 3 веб-сайта были обновлены до .net 4.5, остальные оставались на .net 3.5. Первый экземпляр этой проблемы произошел в конце декабря.
Мы попытались добавить еще одну роль разрешения в папку SharedContent, которая запустила до 100% CPU в пиковый период. Нам пришлось отменить операцию.
Движение было нормальным.
SharedContent сконфигурирован как сопоставленный диск.
У вас есть утечка памяти где-то в приложении. – Asdfg
Это один конкретный рабочий процесс, который попадает на 100% процессор? Кроме того, хотя технически возможно, я видел проблемы при хранении большого количества файлов в одной папке, можно ли разбивать файлы 1.4M на разные папки.Кроме того, я могу представить, что все содержимое поступает с 1 сервера контента, и это может привести к большому стрессу на этом поле и «сети» между полями содержимого и самими веб-серверами? – Liam
Это происходит на всех процессах веб-сайта. Кажется, он каскадируется для всех 3 веб-серверов и заставляет всех из них достигать 100%. Да. весь контент хранится на файловом сервере, а веб-серверы просто сопоставляются с ним. Папка Sharedcontent находится за пределами основной папки веб-сайтов. Что я не понимаю, так это то, как он каскадирует все 3 веб-сервера? Внутренняя связь между виртуальными машинами - 1 гигабит. – KevinC