Назад | Перейти на главную страницу

Как найти узкое место?

Я настраивал WordPress на Digital Ocean для мельчайших капель на несколько месяцев.

Недавно мой блог стал вирусным (более 1000 репостов в Facebook), и серверу требуется более 50 секунд, чтобы ответить (Google Analytics показывает, что в моем блоге одновременно почти целый день находится около 40 человек).

Я спросил у службы поддержки Digital Ocean, и они сказали мне, что мои 512 МБ ОЗУ слишком малы.

Но я использую 'free -m' и вижу

             total       used       free     shared    buffers     cached
Mem:           490        465         24         64         94        136
-/+ buffers/cache:        234        256
Swap:          999          0        999

Так я думаю, у меня доступно 256 мб памяти?

Я сказал им, и они сказали: «Хотя он может показать 100 МБ свободной памяти, это вероятно только после того, как он отключит некоторые службы для экономии памяти».

Но я использую "верх" и вижу

%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

Я обнаружил, что процессор остается 92 ~ 100% id, поэтому я думаю, что мой процессор не занят.

Итак, как мне найти узкое место?

Я хочу знать, в чем заключается узкое место, прежде чем платить больше за обновление.

При изучении проблем с производительностью важно помнить 'большая 4':
-ЦПУ
-Объем памяти
-Диск
-Сеть

Я большой поклонник использования atop для использования процессора и памяти, iotop для использования диска и iftop для сетевого трафика. Имейте в виду, что эти показатели полезны только в режиме реального времени, когда сервер находится под нагрузкой и испытывает эту проблему.

Любая из больших 4 выше может вызвать существенную задержку обработки при запросе страницы. Вы упомянули, что этот сайт является блогом, но не упомянули, генерируется ли контент динамически, что добавит еще один уровень к этому уравнению - базу данных. Длительное время ответа на запрос может вызвать эффект просачивания, что приведет к длительной загрузке страницы.

Единственный способ проверить это наверняка - это запустить тест, например, «ab», и проверить количество посетителей, которых может выдержать ваш сайт, и тем временем устранить неполадки, происходящие на сервере. Запустите что-то вроде:

$ ab -n 10000 -c 50 http://yoursite.com/

с вашего компьютера или другого сервера.

Это поразит ваш сервер с 10'000 запросов, но не более 50 одновременных. Перед запуском теста запустите htop на своем веб-сервере и наблюдайте за активностью по мере появления новых процессов и изменения загрузки памяти и процессора.

Поскольку вы не объяснили настройку своего веб-сервера (вы используете apache / mod_php или nginx / php-fpm или какую-либо другую комбинацию), мы даже не можем удаленно предположить потребление памяти на пользователя.

У меня сложилось впечатление, что по мере роста числа пользователей ваш сервер начинает менять местами и использовать этот дополнительный 1 ГБ виртуальной памяти, которая фактически находится на жестком диске. Чрезмерная подкачка означает, что пользователи ожидают обслуживания процессов, память которых находится на диске, что может объяснить наблюдаемую вами медлительность. Но без дополнительной информации мы мало чем можем помочь.