«Срывается» загрузка страницы

Добрый день.
Вопрос стал ребром, необходимо срочно решить, все меры, принятые по результатам поиска в поисковиках, были приняты, не помогли.

Есть сервер (Ubuntu 13.04, 3.8.0-29-generic), на нем стоит Apache/2.2.22 и PHP 5.4.9-4ubuntu2.3.

При переходе по страницам, каждая 10я (иногда чаще) «срывается».
Под «срывается» я имею введу что загружается только часть страницы. При этом браузер дальше показывает полосу загрузки страницы. Но ничего не происходит.

Если перезагрузить страницу — то все нормально.

Т.е. это проявляется с некоторой периодичностью на совершенно разных страницах, совершенно разных сайтах (виртуальных хостах апача).

Ранее такой проблемы не было. Что стало причиной появления — сказать трудно (если бы знал, не задавал бы вопрос).

Проблема явно не в файлах PHP, а в настройке самого апача.

Спасибо.

UPD 1:
В срочном порядке дважды перезапустил Apache и mysql, и пока все работает без сбоев.
Я так полагаю проблема связана с каким то буфером, или хранилищем, которое очищается при перезагрузке апача.

Тогда такой вопрос, возможно необходимы регламентные перезагрузки апача? Допустим в 4:00?

UPD 2:
В логах никаких ошибок и предупреждений нет.

UPD 3:
Ресурсов, в принципе, хватает.
Долго пытался заставить выплыть опять эту ошибку. Помог ab, сделал параллельно 300 запросов, сервер и скрючился…

Результаты по главной странице:
**.**.**.** - - [30/Oct/2013:14:19:22 +0200] "GET / HTTP/1.0" 200 54088 "-" "ApacheBench/2.3"
.... 52 раза одно и тоже.....
**.**.**.** - - [30/Oct/2013:14:19:22 +0200] "GET / HTTP/1.0" 200 54088 "-" "ApacheBench/2.3"
**.**.**.** - - [30/Oct/2013:14:19:22 +0200] "GET / HTTP/1.0" 200 54088 "-" "ApacheBench/2.3"
**.**.**.** - - [30/Oct/2013:14:19:22 +0200] "GET / HTTP/1.0" 200 8688 "-" "ApacheBench/2.3"
**.**.**.** - - [30/Oct/2013:14:19:23 +0200] "GET / HTTP/1.0" 200 8688 "-" "ApacheBench/2.3"
**.**.**.** - - [30/Oct/2013:14:19:23 +0200] "GET / HTTP/1.0" 200 8688 "-" "ApacheBench/2.3"
.... 174 раза одно и тоже.....
**.**.**.** - - [30/Oct/2013:14:19:23 +0200] "GET / HTTP/1.0" 200 8688 "-" "ApacheBench/2.3"
**.**.**.** - - [30/Oct/2013:14:19:23 +0200] "GET / HTTP/1.0" 200 8688 "-" "ApacheBench/2.3"


Как видно, размер уменьшился с 54088 до 8688 байт.

UPD 4:
3 раза провел тест. Апач перестает корректно отвечать (сбрасывает все последующие запросы) при ~34 запросах одновременно (Нагрузка на процессоры 100%). И приходит в себя через 2-5 секунд.

Но это немного не то. Т.к. в худшем случае на сервер (с его посещаемостью) в среднем одновременно 1 — максимум 3 запроса.

Пока выход вижу один — перезагружать апач хотя бы раз в день…
  • Вопрос задан
  • 3886 просмотров
Пригласить эксперта
Ответы на вопрос 8
Alexufo
@Alexufo
противоречивый, сложный, весь компьютерный.
Можете в момент срыва открыть фаер баг и посмотреть какие файлы браузер ожидает бесконечно? Каждый раз новые?
Ошибок в php нет? Похоже что с инетом что-то, типа yota когда пакеты теряются часто.
Ответ написан
@1x1
Большие статичные файлы отдаются нормально?
Ресурсов хватает? Исправление перезагрузкой апача смахивает на утечки памяти.
В access.log при частичной загрузке размер полный или частичный показывается?
Ответ написан
Anonym
@Anonym
Программирую немного )
Запустите jmeter или, хотя бы ab, чтобы руками не мучиться.
Запустите пинг сервера.
Дальше уже смотрите логи — системы, апача.
Ответ написан
demimurych
@demimurych
запустите не просто пинг сервера. А пинг с размером пакета равным мту вашего сервера.
Часто случаются проблемы с мту на каком нибудь из хопов.
И просто пинг в 32 байта проходит отлично, а вот уже пинги больших размеров пропадают.
Ответ написан
@96467840
у меня была подобная ситуация не девелоперской машине. заказчик активно пользовался буфером вывода, а апач в некоторых случаях автоматически не сбрасывал буфер.

на девелоперской машине я решил это с помощью ob_flush() в конце каждого скрипта и все получилось, а так как на продакшене такой ошибки не было, то я не стал разбираться в проблеме дальше.
Ответ написан
ValdikSS
@ValdikSS
clamp-mss-to-pmtu? Уж очень схожие симптомы. Ну или просто MTU на интерфейсе (клиента) уменьшите.
Ответ написан
@Masterme
а ошибки точно в лог пишутся? error_reporting какой? и в тот ли лог? а то пых может писать как в свой лог, так и в лог апача
сделайте фейл какой-нибудь, например, деление на ноль, и проверьте, отобразится ли это в логе
Ответ написан
@96467840
кстати иногда помогает убить не используемые модули апача (особенно те что связаны с прокси) у меня на продакшен сервере бывали из-за них проблемы, но симптомы были не те (подозреваю кто то пытался через них конектиться и в статистике сети висело очень много левых процессов, сразу говорю в администрировании не силен и потому просто убил в апаче все что связано с прокси — мне помогло).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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