Сегодня я расскажу об одной достаточно редко встречающейся, однако зачастую «трудной» в определении ошибке, возникающей в процессе работы сайтов, созданных на основе CMS OpenCart.
Иногда после закачки сайта на хостинг он работает какое-то (зачастую продолжительное) время, после чего частями начинает отдавать ошибку 500 «Internal Server Error». например, вот так:
Кроме того та же ошибка начинает возникать как в некоторых местах страницы, так и на отдельных страницах целиком!
Ещё одним «симптомом» является то, что восстановление файлов сайта из бекапа временно устраняет ошибку (чем более давний бекап взят — тем дольше работает сайт)
При этом в логах сервера нет ничего вразумительного о том, какой именно файл или событие послужили причиной ошибок, а в error-логе есть только записи вида:
12:08:51 (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server 12:08:51 (104)Connection reset by peer: mod_fcgid: ap_pass_brigade failed in handle_request_ipc function 12:05:22 (104)Connection reset by peer: mod_fcgid: ap_pass_brigade failed in handle_request_ipc function 12:05:22 (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server 12:04:09 (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server 12:04:09 (104)Connection reset by peer: mod_fcgid: ap_pass_brigade failed in handle_request_ipc function
Иногда (зависит от используемой на сервере ОС и его настроек), ошибка в логах может выглядеть немного более информативно:
[Thu Nov 12 08:12:32 2013] [warn] mod_fcgid: read data timeout in 30 seconds [Thu Nov 12 08:12:32 2013] [warn] (60)Operation timed out: mod_fcgid: ap_pass_brigade failed in handle_request function
В обоих случаях суть сводится к тому, что некий скрипт после запуска не может вовремя отдать нужные данные (возможно, уходя в вечный цикл, или зависая по причине отсутствия доступа к нужному ресурсу), а попросту говоря — «зависает» на время свыше разрешенного на сервере переменной max_execution_time, после чего принудительно завершается, так сказать не взирая ни на что.
Из всего вышесказанного можно сделать вывод, что с течением времени либо в какой-то папке катастрофически увеличивается количество файлов (маловероятно, так как обычно они обрабатываются по одному или группами спецскриптами, и в случае проблем виновника зачастую «видно» в логе), либо же до неимоверных размеров (сотни и тысячи мегабайт) разрастается какой-то один файл, и скрипт пытаясь получить к нему доступ просто виснет. Чаще всего такое бывает с файлами логов (файлы с расширением .log).
Выявить виновника в таких случаях достаточно просто. Для этого нужно сравнить объём файлов из рабочего бекапа и файлы сайта с ошибкой.
В случае с OpenCart очень часто «виновником торжества» является лог-файл модуля vQmod, расположенный в папке корневая_папка_сайта/vqmod/vqmod.log
Устранение проблемы.
Устранить ошибку можно двумя путями.
Первый путь. Периодически просто удалять файл vqmod.log и создавать на его месте такой же но пустой.
Второй путь. Обновить vQmod с сайта разработчика. По их словам в последних версиях мода подобной ошибки нет, так как логи очищаются каждые 7 дней автоматически. Скачать новую версию можно тут: https://code.google.com/p/vqmod/downloads/list
Прокомментировать