У меня есть сайт, который получает относительно высокий трафик - около 250 000 просмотров страниц в день. Код PHP обычно выполняется менее чем за 0,02 секунды, но фактическое время ответа может возрасти в часы пик до нескольких секунд (иногда 10+ секунд). Apache выполняет до 700-800 процессов, но использование памяти все еще невелико (даже не половина от 8 ГБ), нагрузка на сервер обычно также очень низкая.
Я переместил изображения и файлы ресурсов в Amazon S3, и это ОЧЕНЬ помогло. Также важно, чтобы на сайт происходила практически постоянная загрузка новых изображений (когда люди публикуют новые фотографии).
Исходя из этих подсказок, я думаю, что это может быть проблема с диском или, возможно, с сетью, но как и с помощью каких инструментов я могу это диагностировать?
Это может быть многое, но начнем с наиболее вероятных с сервера Apache / PHP:
MaxClients
или потребление памяти всем остальным, что работает на сервере (MySQL и т. д.). Поскольку вы говорите, что он использует только половину, это может не быть проблемой, хотя 800 процессов Apache в 4 ГБ - это всего 5 МБ / процесс, кажется очень низким.top
чтобы узнать, сколько вы используете. Используя простую программу мониторинга, например sar
или более сложный, такой как Nagios или Zabbix, может дать вам более подробную информацию о загрузке процессора с течением времени. Единственное, что вы можете здесь сделать, это установить и использовать кеш-код операции PHP, такой как APC или eAccelerator. После этого, как правило, вы ничего не можете сделать, кроме оптимизации базы данных / приложения.top
и iostat
чтобы узнать, сколько операций ввода-вывода вы делаете. Высокое значение wa% наверху, прерывистое или постоянное, обычно указывает на проблему ввода-вывода. Если это проблема ввода-вывода, узнайте, где она возникает (Apache, PHP, база данных, что-то еще и т. Д.), Поскольку решение в конечном итоге будет зависеть от того, что его вызывает.Я бы также проверил различные файлы журналов на наличие очевидных сообщений об ошибках (система, Apache, база данных и т. Д.). Я знаю, что у меня были сайты с проблемами производительности только из-за того, что количество дескрипторов файлов было слишком низким для большого объема веб-сайта.