Делаю стресс тестинг сервера с помощью Apache Benchmark Tool и Apache jMeter. При 30 и выше конкурентных запросов начинает периодически (примерно каждый 100-200 запрос) проседает сеть на 3-4 секунды.
При всём этом, нагрузки на сервер никакой нету, LA нулевой, памяти предостаточно.
т.е. 200 запросов идут с откликом 50мс, а затем ~10 идут с откликом 3000 мс и затем ситуация повторяется.
Причём это никак не зависит от содержания ибо тестили даже на статике.
Конфиг сервака:
Leaseweb
Intel Xeon X3440/8GB/2x1TB (QC22)
QC X3440
8GB DDR3
1 x 100Mbps Full-Duplex
В чём может быть проблема и как можно отмониторить слабые места?
C чего вы взяли, что проседает именно сеть? Попробуйте параллельно со стресс-тестом (на полную) пинговать сервер. Если под нагрузкой пинги идут стабильно, значит с сетью все в порядке. А апач может иметь 100 причин, почему он тормозит.
Посомтрите вывод top под нагрузкой для начала, сколько времени сидит в ядре, какие процессы вверху, как используется свап.
Что касается ограничения ширины, например, я как-то через ab тестировал сервер, а канал был всего 10 Мбит (+ ограничения у моего провайдера), при размере страницы в 40 Кб это всего 30 страниц в секунду, я тоже удивлялся, почему свободное процессорное время есть, а сервер его не использует.
поставьте какую нибудь систему мониторинга сервера, например munin, cacti, zabbix и тд по графикам можно будет видеть каких ресурсов не хватает.
вы ничего не написали про ПО на сервере. У вас там apache крутится? Периодические провалы могут быть связаны с MaxRequestsPerChild — например…
Проблема не в ПО.
Тестировали изначально на Node.JS, нагрузка нулевая, Node.JS, на каждое ядро нагрузка отлично распределяется.
Затем в целях тестирования поставили Apache и проверили как будет отдаваться статика, те-же самые провалы с сетью что и были с Node.JS, логично предположить что проблема где то на уровне сети, как можно это отследить?
При менее 30 конкурентных запросах никаких провалов нет.
Подключите машину с которой тестируете напрямую к серверу кросс-кабелем, проведите тест. Далее уже пляшите от результата. Если опять тоже самое, ищите проблему в сетевой карте (драйвере сетевой карты), если всё будет в порядке, искать проблему на сетевом оборудовании, заменяя промежуточные звенья по одному и тестируя.
тогда могу предложить, если есть возможность остановить сервер, загрузить его в какую нибудь Resсue систему минимальную, под ней запустить nginx и протестировать на статике, если проседания останутся — виновато железо…
Мы делали на сервере стресс тестирование без апача вообще. Это мы чуть позже поставили апач дабы проверить, останется ли проблема. Так что я не вижу как тут может быть задействован MaxRequestsPerChild.
Планируется что на сервере будет работать один Node.JS