С момента запуска виртуального сервера на LAMP и блога на WordPress в январе этого года загрузка сайта и всех его страниц вместе с админкой WordPress происходила весьма небыстро, а местами затягивалась на 15-20 секунд. В январе я мало заходил на сайт и почти ничего не писал, поэтому проблема долгой загрузки страниц оставалась нерешенной.
Когда я стал настраивать онлайн-дозиметр две недели назад, то это потребовало регулярного посещения и загрузки страниц сайта. Вот тут частые зависания и долгая загрузка меня вконец достали и я стал разбираться в чем дело. Первым делом с помощью команды top я проверил потребление ресурсов сервером во время загрузки сайта — оказалось, что потребление памяти и загрузка процессора в это время были весьма скромны. Дальше я заподозрил в тормознутости сам WordPress, поскольку вся структура сайта построена на PHP скриптах и страницы могли тормозить из-за этого. Но в силу неопытности долго не мог разобраться, что и где нужно поменять, чтобы расшевелить WordPress или хотя бы проверить, как он работает.
Для онлайн дозиметра мне потребовалось создать страничку с графиком, но поскольку я не смог интегрировать код для построения графика на CanvasJS в стандартную страницу PHP WordPress, то по совету из Интернета создал статичную HTML страницу. Когда же и она стала загружаться с тормозами, я понял, что дело совсем не в WordPress, и стал копать настройки веб-сервера Apache.
Поиски материала по оптимизации веб-сервера привели навели меня на эту прекрасную статью.
В ней написано, что одной из причин долгой загрузки сайта может являться работа многопроцессорного модуля Apache (MPM). По-умолчанию в Apache установлен MPM prefork (он же оказался и у меня), который отличается своей надежностью и стабильностью работы, но проигрывает в скорости обработки запросов. По инструкции из статьи я переключил MPM модуль на MPM-Event. И что вы думаете — 80% зависаний тут же ушли, сайт стал гораздо отзывчивее и быстрее. Вот уж не думал, что одна настройка веб-сервера может настолько сильно повлиять на его работу!
