Есть php-скрипт, который генерирует около 100к запросов в базу (исключительно SELECT с несколькими JOIN).
Проблема: в какой-то момент база как будто "подвисает" и скрипт начинает выполняться очень медленно.
Сделал лог тяжелых запросов
slow_query_log = 1
slow-query_log_file = /var/log/mysql-slow.log
long_query_time = 2
Как оказалось, всего 1 запрос выполнялся больше 2 секунд. То есть, видимо, проблема в том, что между запросами проходит большое количество времени (в скрипте нет проблемы, если возникнет такой вопрос).При этом все то время, что обрабатывается скрипт, ядро, на котором висит процесс, загружено на 100%.
EXPLAIN запроса что показывает?
Каковы показатели использования памяти в это время? Может, начинает использовать swap?
Что с активностью диска в то же время?
Попробуй подключить какой-нибудь APM, с помощью которого можно получить достаточно информации о запросах, соединениях и других характеристиках. Тогда не придется на кофейной гуще гадать.