Разбился мой сервер, как мне узнать, что случилось?

С удаленной машины я запустил 100 одновременных запросов к моему Ubuntu VPS

ab -n 100 -c 100 http://...

И, как я подозревал, сервер «завис». Я все еще могу пропинговать это, и это отвечает очень быстро (~ 50 мс). Но я не могу ssh проникнуть туда или добраться до веб-сервера. До этого я выполнял 1000 запросов с 10 одновременными, и он отвечал быстро и надежно, работая со скоростью около 80 запросов в секунду.

Перемотка вперед на пять минут, и я могу войти, веб-сервер работает отлично, все снова идеально.

  • Uptime сообщает мне, что load_average - 0.06, 0.04, 0.05, и у меня осталось четверть гигабайта памяти (из 512 МБ). Запуск netstat -n дает мне лотов и лотов таких строк:

    tcp        0      0 127.0.0.1:9311          127.0.0.1:35030         TIME_WAIT  
    tcp        0      0 127.0.0.1:5984          127.0.0.1:54384         TIME_WAIT  
    tcp        0      0 127.0.0.1:9311          127.0.0.1:35024         TIME_WAIT
    
  • На сервере запущен nginx в качестве обратного прокси-сервера, с кучкой cherrypy серверы за этим. Эти серверы работают на портах между 8000 и 9000 и слушают только 127.0.0.1.

100 одновременных запросов мне не кажутся особенными, даже несмотря на то, что это абсолютно минимальный сервер спецификаций, предлагаемый моей хостинговой компанией. Как мне узнать, что произошло при сбое сервера?


Сервер не перезагрузился после сбоя. На мой kern.log не было написано никаких сообщений, и перед сервером нет брандмауэра.

5
задан 3 October 2011 в 21:11

1 ответ

Вам необходимо установить что-то, что записывает данные о производительности для вашей системы, и запустить его во время выполнения этих тестов. collectd довольно популярен для этого, но потребует некоторого предварительного изучения. Вы можете установить 'sysstat', чтобы получить команду 'sar', но степень детализации составляет всего 10 минут, поэтому она может не решить все проблемы. Также вы можете войти в систему и запустить что-то вроде 'vmstat 5', который будет выводить статистику о IO / нагрузке / памяти каждые 5 секунд.

100 - это много для небольшого сервера, если вы используете предварительный форк Apache (по умолчанию) с PHP .., так как для этого потребуется 100 параллельных процессов для удовлетворения запросов. Если MaxClients установлено ниже 100, то запросы будут резервироваться в очереди и будут выполняться очень медленно. Это, вероятно, предпочтительнее полного сбоя системы.

0
ответ дан 3 October 2011 в 21:11

Другие вопросы по тегам:

Похожие вопросы: