Недавно я переместил свой сайт на новый сервер (Apache 2, PHP5, MySQL5). Сайт представляет собой форум на базе Invision. Каждые несколько постов / тем просто зависает. Данные были записаны, потому что, если вы остановитесь и перезагрузите, сообщение / поток будет там. Сначала я думал, что это проблема записи, но нет. Данные записываются, но загрузка страницы никогда не завершается. Он не покидает страницу, на которой были введены данные.
Как лучше всего решить эту проблему? Единственное, что я сделал недавно, - это уменьшил таймауты MySQL, но я не вижу в этом проблемы, поскольку значения все еще достаточно велики, и в журнале MySQL нет упоминаний о тайм-аутах. Для записи в журнале ошибок PHP тоже ничего нет.
РЕДАКТИРОВАТЬ: Я проверил статус своего сервера. Все выглядело хорошо, но у меня есть подозрение, что я достиг своего ServerLimit, поэтому я удвоил это. Также включен мой Keepalive. Будем следить за этим.
РЕДАКТИРОВАТЬ 2: Прошло несколько дней, а это все еще происходит. Хотя у меня есть дополнительная информация;
ОБНОВЛЕНИЕ (05.04): Я собрал последние версии Apache и PHP из исходников, не повезло. Затем я удалил их и использовал репозиторий remi для обновления всех моих пакетов до последней стабильной версии. Сбои в сегменте вроде бы прекратились, но зависание продолжается.
ini
находятся по адресу:
ОБНОВЛЕНИЕ - РЕШЕНО! - Проблема заключалась в огромном размере кеша запросов в MySQL. Было 2Гб, поменял на 64М, отсортировал.
- Apache выдает ошибки сегментов
Вот твоя проблема. Apache не зависает, ваш браузер зависает, когда дочерний элемент apache умирает и не выполняет запрос.
Отладка LogLevel может дать вам немного больше информации (хотя и тонну информации, если это загруженная производственная система).
Моим первым предположением было бы suhosin / mod_security или что-то, что скомпилировано с неправильным php api или, возможно, с использованием общих библиотек, которые немного изменились. Я бы дважды проверил их, и если вы можете изолировать различные запущенные расширения php / модули apache. Вы используете apcc, eaccelerator или любой кеш-код операции? Зенд? Source Guardian? ионный куб? Вы используете правильную версию каждого из них? Последние обновления? Zend 3.3.9, ioncube также имеет недавнее обновление и может вызывать сбои в работе в зависимости от версии Zend, которую вы используете.
Вот несколько советов, учитывая большое количество возможностей и небольшое количество деталей.
Если ничего из этого не сработает, опубликуйте содержимое php.ini, httpd.conf и my.cnf.
Привяжите что-то вроде strace или gdb ко всем рабочим процессам apache и перезагрузите страницы в браузере, которые сломаются. Тогда вы увидите дополнительную информацию о том, что он делает при сбое.
Когда вы говорите, что вы включили coredump, вы также разрешили им быть достаточно большими для обработки coredump Apache? Скорее всего, он будет довольно большим, поэтому даже временная установка неограниченного размера может помочь.
Если вы используете firefox, установите плагин Firebug. Включите его, щелкнув значок ошибки в правом нижнем углу браузера, а затем установите «Включить» на вкладке «Сеть». Загрузите страницу своего форума и проверьте наличие ошибок.
Есть большая вероятность, что это серьезная проблема с ОС или оборудованием серверов.
Я бы попытался проверить ОС (Linux на основе Debian использует debsums
, ни в чем не уверен).
Также попробуйте запустить memtestx86+
что должно подтвердить отсутствие серьезных проблем с памятью, они могут появиться только под нагрузкой.
Я видел похожие проблемы, связанные с DNS, есть ли вероятность, что вы разместите URL-адрес сайта?
РЕДАКТИРОВАТЬ: только что видел, что вы уже упомянули, запустите сайт через http://www.intodns.com/ это также может быть связано с именем хоста сервера. Как я уже сказал, если вы не против опубликовать домен, это может быть проще.
Попробуйте остановить Apache, а затем перезапустите его с помощью: strace / path / to / httpd -X (будет запущен только один рабочий процесс, и Apache не отключается от консоли). Воспроизведите зависание и проверьте вывод strace. Это должно определить, какая часть системы дает сбой.
Попробуйте уменьшить размер кеша запросов в MySql.