У меня есть веб-сервер под управлением CentOS 5 с Apache 2 и PHP 5.3. На данный момент сервер в основном используется для разработки, поэтому о трафике говорить не приходится. На сервере находится пара экземпляров Drupal, экземпляр Mediawiki и несколько статических страниц. Он использует виртуальные хосты.
Проблема в том, что у меня очень плохая производительность с Drupal и Mediawiki. Время выполнения страницы составляет от 5 до 15 секунд. Статические страницы работают нормально.
Я включил mod_forensics и вижу, что запросы регистрируются немедленно, но затем требуется 5-10 секунд, прежде чем они будут обработаны, поэтому проблема каким-то образом связана с выполнением на веб-сервере.
Я установил модуль Devel, который предоставляет информацию о выполнении в Drupal, и он дает мне такие цифры.
Executed 59 queries in 62.86 milliseconds. Queries taking longer than 5 ms and queries executed more than once, are highlighted. Page execution time was 6215.2 ms.
Так что производительность базы данных не кажется проблемой.
Я установил eAccelerator и включил ведение журнала, он показывает совпадения почти для всех запросов страниц, например:
EACCELERATOR hit: "/var/www/adqwww/includes/path.inc"
Это должно означать, что кеш используется, если я правильно понимаю.
Теперь у меня закончились идеи, мне нужно более точно определить, что происходит, но я действительно не знаю, как это сделать. Поскольку затронуты и Mediawiki, и Drupal, я предполагаю, что это связано с php, но я не знаю, как с этим разобраться. Любая помощь будет оценена.
ОБНОВИТЬ: Проблема теперь решена (я не знаю, есть ли способ пометить вопрос как решенный), это оказалось проблемой DNS, как это предлагается ниже. Я не понимал, что SQL-серверу необходимо разрешить подключение к веб-серверу. Спасибо всем, кто нашел время ответить на этот вопрос.
Попробуйте отключить модуль статуса обновления Drupal, при определенных конфигурациях брандмауэра это может привести к относительно долгому таймауту. Возможно, проблема с MediaWiki особенная, но она также может быть связана с внешним поиском.
Похоже на тайм-аут, ваша система чего-то ждет, а не что-то делает.
Обычно в этой ситуации это разрешение имен (DNS) (обратный поиск httpd / mysql или прямой поиск хоста mysql).
Проверьте, можете ли вы найти IP-адрес, к которому вы подключаетесь, и имя хоста, к которому подключается ваша БД, и сколько времени это займет.