Проблема с производительностью сайта

Дано : 4-ядерный выделенный сервер, 2Гб ОЗУ, 32-битная Ubuntu 8.04 с ~30 виртуальных хостов с небольшой нагрузкой в среднем. Крутится Apache + MySQL + PHP 5.2.4.

Проблема :
один из виртуальных хостов работает медленно — с откликом ~7секунд. На нем как раз и самая высокая посещаемость. Существует еще два хоста с точно такой же CMS (Joomla 1.0), но под другие языки, где посещаемость ниже и отклик гораздо быстрее. Также это совершенно точно не проблема с прогрузкой элементов страницы в браузере.

Вопрос : Почему тормоза только на одном виртуальном хосте, а на других при этом всё хорошо?

Размер используемой ОЗУ небольшой ~600Mb.
После перезагрузки сайт более-менее оживает.
Вот uptime за последний час после неё: 0.10, 0.22, 0.34
В среднем на проблемном виртуальном хосте около ~1000 уников в день, на остальных двух ~100-200.

netstat -an -t | awk '$4 ~ /\:80$|\:443$/ {s=s+1} END {print s}'
выдает от 60 до 170

Сразу говорю — я не администрирую сервер и понимаю, что по хорошему надо бы ставить nginx на фронт-энд и кэш.
Но прежде чем заморочиться с этим (всё-таки продакш-сервер) хочется быть уверенным, что проблема не в производительности PHP или MySQL. Учитывая то, что опыта аудита производительности у меня нет, был бы весьма благодарен за подсказки.

UPDATE:

Проблема устранена — нашел вызов левого скрипта, который уже давно утратил актуальность. Он и блокировал выполнение PHP.
По факту разбирательств также выяснилось, что загрузка ЦП чуть выше нормы, в БД долгие запросы не висят. Количество запросов в единицу времени не выглядит устрашающе. Но nginx и eAccelerator всё равно ставить будем.

Большое спасибо всем за ответы!
  • Вопрос задан
  • 2852 просмотра
Пригласить эксперта
Ответы на вопрос 7
@skvot
Для начала самое банальное — проверьте, включено ли в системе кеширование, и проанализируйте долгие запросы
Ответ написан
alexmuz
@alexmuz
Проблема в используемой CMS Joomla 1.0.
И вы сами ответили на свой вопрос.
Один из виртуальных хостов работает медленно — с откликом ~7секунд. На нем как раз и самая высокая посещаемость.

Сразу после перезагрузки у вас число одновременных запросов на этот ваш вритуал хост небольшое, поэтому и сайт оживает, когда приходит больше посетителей, всё возвращается.
Ставьте nginx и гуглите на тему того, как можно тюнить Joomla, наверняка можно какое-нибудь кэширование включить. Ну и посмотрите хотя бы какие запросы выполняются, есть ли все индексы нужные, скорее всего проблема в запросах MySQL.
Ответ написан
Комментировать
rakot
@rakot
Открываем top и смотрим, кто чего много ест, вскрываем самого прожорливого. Если никто, то скорее всего дело в какой либо блокировке, возможно даже в файловой(система ждёт блокировку на запись в файл кеша).
Ответ написан
AHTOH
@AHTOH
2 Гб ОЗУ не слишком много для такого хостинга. В пиковой нагрузке на сервере не заканчивается память случайно? Не через своп начинает работать? Если да, то дешевле будет памяти доставить гигов до 16.
Ответ написан
Stdit
@Stdit
Включите логгинг длинных запросов. Иногда такие проблемы решаются установкой правильного индекса и/или mysql кеша.
Ответ написан
Комментировать
@egorinsk
Нужно смотреть, что происходит во время запроса, в идеале отпрофайлить его, а там уже делать выводы.
Ответ написан
AterCattus
@AterCattus
Люблю быстрый backend
apachetop и логи xdebug в помощь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы