У меня есть VPS-сервер с CentOS 6, купленный у MochaHost. У него установлен WHM / cPanel, и у меня есть полный root-доступ. Веб-сайты, которые находятся на этом сервере, загружаются очень медленно, но когда я использую инструменты pingdom для проверки скорости загрузки сайта, для первой загрузки сайта требуется до 60 секунд, а затем он загружается очень быстро как в pingdom, так и в моем браузере, поскольку хорошо. Я считаю, что сервер переходит в спящий режим и очень быстро просыпается, когда получает пинг от pingdom.com. Я отправил сотни сообщений в хостинговую компанию с сообщением об этой проблеме, но эта проблема так и не была устранена, они сделали вид, что сайт загружается быстро.
У меня есть root-доступ к серверу. Могу ли я узнать, почему сервер медленно отвечает? и могу ли я узнать, перейдет ли мой сервер в спящий режим?
Я не думаю, что у нас есть общий ответ на этот вопрос, но многие вопросы «мой сервер работает медленно» получают закрыт как дубликат этого вопроса. Причина в том, что планирование емкости почти всегда связано с производительностью. Когда у вас заканчивается емкость, нормальный эффект заключается в том, что веб-сайт начинает работать медленно.
Ваш корпус не исчерпал возможности, тем не мение вопрос далеко из уникальный на ServerFault.
Наиболее вероятная причина - это кеш или, возможно, множество разных кешей, срок действия которых истек, когда вы делаете этот первый запрос. У вас есть кеш DNS, кеш файловой системы, кеш кода операции PHP, пулы серверов приложений, кеш базы данных, кеш запросов, кеш ответов API и, возможно, многое другое. Поскольку вы работаете на VPS, часть вашей памяти могла быть выгружена на диск, когда вы были в режиме ожидания, что давало более активным пользователям физического оборудования больше оперативной памяти, с которой можно было поиграть, и для этого требуется время, чтобы вернуть ее обратно.
Некоторые приложения и CMS управляют своей собственной cron-подобной системой, в которой запросы страниц от обычных пользователей могут запускать запланированные задания. После длительного периода отсутствия запросов первый запрос гарантированно запустит эти запланированные задания, что может вызвать медленную загрузку страницы.
Что вам нужно сделать, чтобы найти проблему, так это профилирование производительности. Я часто возвращаюсь к strace
потому что он всегда доступен, и я его хорошо знаю, но XDebug (для PHP) или dtrace
тоже хорошие варианты. Профилируйте первый запрос и сравните его с профилем более позднего запроса. Различия между двумя профилями заключаются в том, где тратится время.
Так же много догадки в ответах на вопросы, которые я дал выше. Некоторые из них были правильными для тех, кто задает эти вопросы, а может быть и для вас тоже.