Jump to content

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

Featured Replies

Posted
comment_173394

В последнее время стала появляться либо 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 сервера, этот параметр вернется в исходное положение.

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

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

set global max_prepared_stmt_count=xxxxxx;

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

comment_173398

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

  • Author
comment_173400

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

comment_173404

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

Edited by Zero108

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
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.