У меня есть старый сайт, который использует большую базу данных, и я не хочу обновлять его сейчас. Проблема заключается в том, что база данных mysql выполняет некоторые запросы очень долго, когда высокий трафик c около 4000 онлайн-пользователей приводит к тому, что mysql достигает 600% -800%, и мне приходится вручную перезагружать сервер mysql с WHM. .
Я хочу использовать простой сценарий оболочки cron job, чтобы читать список процессов mysql каждые 10 секунд, и если какое-либо время процесса превышает, например, 10 секунд, этот процесс завершается.
Это запрос, который я нашел для выполнения такой задачи:
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where time>10 and command<>"Sleep"'
Я думаю, чтобы получить идентификатор процесса для уничтожения, я должен использовать:
mysql -e 'SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST where time>10 and command<>"Sleep"'
Вывод так:
+------+
| ID |
+------+
| 1095 |
| 1094 |
| 1081 |
| 1079 |
| 1078 |
| 1074 |
| 1040 |
| 1038 |
+------+
Теперь у меня есть эта выходная таблица, мне просто нужно обернуть эту задачу в сценарий оболочки, чтобы проанализировать эти идентификаторы процесса и уничтожить их.