Задание Cron для перезапуска MySQL, если слишком много процессов сна - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть несколько сценариев, которые будут запускаться каждые 10 минут.Но иногда сценарий не выполняется должным образом, поэтому в итоге возникает много процессов ожидания.

Поэтому я хочу перезапускать mysql каждые n часов или, когда слишком много процессов ожидания, я пробовал что-то вроде * * * * * /etc/init.d/mysql restart (Я знаю, что это на каждую минуту, но только для примера), но не работает.

Или есть ли другой способ предотвратить процессы сна? Каждый мой сценарий может работать в течение 8 минут, если имеется много данных.настроить работу cron на 10 минут.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 13 декабря 2011

Во-первых, как сказал Бьорн выше: это должен быть временный обходной путь, поскольку это не так уж много решений.

Ваша проблема в том, что вы пытаетесь перезапустить вашMySQL клиент, а не демон (mysql d ), попробуйте это вместо:

0 * * * * /etc/init.d/mysqld restart
3 голосов
/ 13 декабря 2011

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

Однако вы НЕ должны уничтожать процессы в спящем режиме.

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

THINGS вам нужно сделать:

  • выяснить проблему в ваших скриптах и ​​заставить ее работать
  • или увеличьте максимально разрешенное соединение (паллиативно, но работают лучше, чем перезапустите сервер MySQL)

Вот статья о спящем соединении

...