Помогите определить источник нагрузки. PHP+MySQL

Всем привет. Имеем достаточно мощный сервер 2xXeon Gold 5218R 2.10GHz 256DDR4, обслуживающий всего один сайт на php+mysql. В базе Mysql (innodb) имеется таблица items в 23 поля, основная работа происходит с ней - множество операций insert, множество операций чтения, раз в 3 часа - очистка ненужных записей. Для таблицы установлено 6 индексов + primary key. Все запросы происходят исключительно по ключам, основные - по полю

uid VARCHAR(32)

которое так же является индексом.

Принцип работы: пользователи добавляют в таблицу items записи, затем запускается долгий скрипт PHP, который в цикле выбирает записи по uid и обрабатывает их. Этот скрипт - "бесконечный" цикл while. Он выбирает записи по uid+id пользователя+status (обработано или нет), обрабатывает, затем снова выбирает и обрабатывает - так до тех пор, пока записи существуют) В среднем пользователь добавляет по 300-500 записей, их обработка занимает 10-30 минут. В таблице постоянно имеется ~2млн записей, уникальных uid - порядка 20 тысяч. В данном режиме сервер работает относительно "спокойно" - потребление CPU на уровне 1-2%, быстрый отклик и т.д.

Кроме того, каждый час cron запускает аналогичные скрипты, которые в автоматическом режиме запускают такие же циклы обработки. Одновременно запускается от 500 до 1000 заданий (выбираются по условию из другой таблицы и в цикле exec ('/usr/bin/php ...'); запускаются). В такие моменты нагрузка на сервер заметно возрастает. Причем возрастает в разы, load average достигает 200 и выше, сайт становится недоступен. Такая нагрузка наблюдается 20-30 минут, затем постепенно спадает, затем (в очередной час) - снова скачет. введите сюда описание изображения

Оптимизацией занимаюсь последних пару недель. За это время сделано -

Казалось бы, сайт требует действительно больших ресурсов, но до недавнего времени все прекрасно работало на "обычном" 4 ядерном сервере с 32Gb памяти, а сейчас многократно увеличив ресурс, без изменения в скриптах - получил странную производительность.

Надеюсь, здесь найдутся специалисты, которые подскажут над чем еще стоит поработать.


Ответы (0 шт):