Периодически Возникает Ошибка 500 На Сайте


#1

Приветствую всех!

Проблема в следующем: на сайте (и на фронтэнде и на бэкэнде) периодически возникает "Внутренняя ошибка 500". Воспроизвести её умышленно не получается. Всплесков (каких-то нереальных) посещаемости нет. Всё штатно, но тем не менее она периодически возникает.

Эррор лог на сервере смотрел. Всё, что там видно, это периодически появляется строка вида:

--------------------------------

[Tue Sep 12 16:42:49 2017] [error] [client 37.75.200.44] Premature end of script headers: index.php, referer: https://site.ru/url1/

--------------------------------

Где url1 - разные страницы сайта (и страницы товара, и категории).

Когда точно ошибка начала появляться, сказать не могу. Возможно, это связано с обновлением (не факт) до 4.6.2.

"Журнал событий" на сайте при беглом осмотре ответа не дал. Знать бы еще, что искать там.

Прошу помощи "знатоков". Где копать? Заранее благодарен!


#2

Прошу помощи "знатоков". Где копать? Заранее благодарен!

Именно такой ошибки не было. Я бы загуглил https://yandex.ru/search/?text=Premature%20end%20of%20script%20headers&&lr=213

когда скрипт превышает допустимое время, которое ему отвели (30 секунд или смотрите сколько в настройках) - обычно и начинают валиться эти Premature end of script headers
А нехватает обычно из-за ограниченных ресурсов сервера, когда боты начинают обход сайта или в час пик. Или действительно какой-то запрос на сервере очень тяжёлый выполняется (лочит базу в этот момент), а все остальные запросы стоят и ждут, и в конце концов отваливаются по таймауту

Я поубавил нагрузку забанив в htaccess ботов мусорных.


#3

Именно такой ошибки не было. Я бы загуглил https://yandex.ru/search/?text=Premature%20end%20of%20script%20headers&&lr=213

Я поубавил нагрузку забанив в htaccess ботов мусорных.

Насчет "загуглил" - правильное замечание. Что-то я "стормозил". Ясности прибавилось.

Как вычисляли "мусорных" ботов? Банили просто по IP? Можно с примером? Заранее благодарен...

<blockquote  class="ipsBlockquote" data-author="Saboteur" data-cid="284293" data-time="1505236572">
<p>Именно такой ошибки не было. Я бы загуглил <a data-ipb='nomediaparse' href='https://yandex.ru/search/?text=Premature%20end%20of%20script%20headers&&lr=213'>https://yandex.ru/search/?text=Premature%20end%20of%20script%20headers&&lr=213</a></p>
<p> </p>
<div> </div>
<p>Я поубавил нагрузку забанив в htaccess  ботов мусорных. </p>
<div> </div>
</blockquote>

#4

Как вычисляли "мусорных" ботов? Банили просто по IP? Можно с примером? Заранее благодарен...

RewriteEngine on
# Блокируем плохие боты
SetEnvIfNoCase User-Agent "Aboundex" bad_bot
SetEnvIfNoCase User-Agent "SemrushBot" bad_bot
SetEnvIfNoCase User-Agent "AhrefsBot" bad_bot

Блокируем ненужные поисковики

SetEnvIfNoCase User-Agent “Baiduspider” bad_bot

Order Allow,Deny Allow from all

Deny from env=bad_bot

Ставим в самый верх htaccess. Ну и в логах посмотри юзерагенты ботов которые заходят конкретно на твой сайт, ну за исключением яндекса и гугла :)


#5

Здравствуйте. У меня такая же история начала периодически возникать.
После очередных обновлений модулей стала возникать 500 ошибка. Причём очень часто.
В логах нашёл вот это:
PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 1253376 bytes) in /var/www/domains/мойдомен.ru/app/Tygh/Backend/Database/Mysqli.php on line 79, referer: https://мойдомен.ru/файладминки.php
Подскажите, что с этим делать и как победить?


#6

В файле app/Tygh/Bootstrap.php увеличьте значение директивы memory_limit

Если не поможет, то искать, кто столько памяти кушает


#7

Будете смеяться, но он пустой.
Там есть только вот такое:
[object Object]
и всё.
Может такое быть что это ссылка на другой файл?
Я могу с другого сервера скопировать, но может это какой то модуль так делает?
На днях обновлял модули от AB.


#8

Файл перезалил.
Нашёл строки:
// Set maximum memory limit
if (PHP_INT_SIZE == 4 && self::getIniParam(‘memory_limit’, Bootstrap::INI_PARAM_TYPE_BYTE) < 64 * 1024 * 1024) {
// 32bit PHP
@ini_set(‘memory_limit’, ‘64M’);
} elseif (PHP_INT_SIZE == 8 && self::getIniParam(‘memory_limit’, Bootstrap::INI_PARAM_TYPE_BYTE) < 256 * 1024 * 1024) {
// 64bit PHP
@ini_set(‘memory_limit’, ‘256M’);
}

В каком месте нужно менять значение memory_limit ?


#9

После указанного вами кода добавьте строчку

@ini_set('memory_limit', '512M');


#10

Спасибо, но не помогло. Сразу свалилось на внутреннюю ошибку 500 service unavailable
В логах значение увеличилось, но ситуация не поменялась:
PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 1253376 bytes) in /var/www/domains/мойдомен.ru/app/Tygh/Backend/Database/Mysqli.php on line 79


#11

А может у вас дебаггер включён?


#12

Как проверить?
Я точно ничего не включал.


#13

На странице видна иконка жука в правом верхнем углу?


#14

Нету.
Есть другая, но она от модуля AB:Preload:

Screenshot_290


#15

Кавычки неправильные были. Пост поправил. Попробуйте еще побольше значение поставить, 1024, например. Но искать что за запрос столько памяти есть полюбому надо