Я настраивал 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 ГБ виртуальной памяти, которая фактически находится на жестком диске. Чрезмерная подкачка означает, что пользователи ожидают обслуживания процессов, память которых находится на диске, что может объяснить наблюдаемую вами медлительность. Но без дополнительной информации мы мало чем можем помочь.