Jump to content

Стала часто появляться ошибка 500 связанная с max_prepared_stmt_count


Recommended Posts

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

Я узнал, что они вызываются из-за этого:

Can't create more than max_prepared_stmt_count statements (current value: 16382) (1461)

Выключил абсолютно все приложения кроме форумов, все равно возникают ошибки. Прочел здесь следующую тему:

Воспользовался советом и переключил динамическое отображение тем на традиционное. Все равно возникает ошибка.

Скажу так, сайт сутки работает нормально, но появляются такие 30-40 минут в сутки, когда на сайт вообще невозможно зайти.

Техническая поддержка отмахивается, говорит что я превышаю максимальное количество разрешенных динамических запросов и абсолютно игнорирует то, что полтора года у них на хостинге сайт с большим количеством приложений обращающихся к mysql функционировал без таких проблем.

Я бы правда не побеспокоил вас, но к сожалению, я админ любитель и мне остается только просить помощи у вас. Спасибо за ваши советы. Приятного вечера.

Я долго копался, параметр max_prepared_stmt_count ограничивает максимальное количество подготовленных операторов, которые могут одновременно существовать в mysql на уровне сервера. Каждый раз, когда вы хотите создать новый подготовленный оператор, mysql сначала проверяет этот предел, и если сервер mysql имеет слишком много подготовленных операторов, то он блокирует новые с сообщением об ошибке.

В принципе этот параметр можно было бы отредактировать через простой SQL запрос:

set global max_prepared_stmt_count=xxxxxx;

Но вся проблема в том, что если я отредактирую это значение, то после перезагрузки mysql сервера, этот параметр вернется в исходное положение.

Link to comment
Share on other sites

36 минут назад, ryancoolround сказал:

В принципе этот параметр можно было бы отредактировать через простой SQL запрос:

set global max_prepared_stmt_count=xxxxxx;

А к этому вообще нет доступа. Попробовал уже.

Link to comment
Share on other sites

Возможно это поисковые боты на форум нападают. Надо логи смотреть, кто в это время генерит много запросов и блокировать по IP/UserAgent. Но на неуправляемых хостингах это малореально. 

Link to comment
Share on other sites

Тоже стоит упомянуть. В такие моменты, если удалось зайти в ACP, и удалось очистить системные кэши, сайт на 2 минуты начинает функционировать. Но после, опять белый экран с ошибкой.

Link to comment
Share on other sites

То, что вы сколько то там пользовались хостингом, и проблем не было, - абсолютно не показатель. Потому что хостинг у вас VDS скорее всего. Раньше, возможно, на нем не было сайтов, которые грузят железо, а потом появились. И никакой софт никогда честно не разделит физические ресурсы сервера между пользователям, что бы кто ни говорил. Поэтому выход тут такой - покупайте свой сервер и ставьте под стол, просите провайдера пробросить на ваш выделенный IP запись PTR. Либо переезжайте на выделенный сервер на Hetzner, если средства позволяют. Наиболее дешевый вариант - подключить сайт через Cloudflare (бесплатно), делается за час. Там есть опция Firewall (по странам и по IP) и защита от ботов.

Edited by Zero108
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Ваша ссылка была автоматически строена.   Отображать как обычную ссылку

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...