MySQL запрос перезапускается каждые 60 секунд?

У меня странная проблема. Я выполняю запрос MySQL к очень большой таблице из PHP. Время запроса больше минуты, но это не моя проблема. Похоже, что PHP отправляет запрос каждые 66 секунд.

show processlist;
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| Id     | User    | Host              | db       | Command | Time | State         | Info                                                   
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| 150018 | root    | localhost         | amrs     | Query   |   32 | Sending data  | /*DEREK*/select ctlno, count(*) AS count from (omitted)

Через несколько минут я снова проверил:

+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| Id     | User    | Host              | db       | Command | Time | State         | Info                                                   
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| 150018 | root    | localhost         | amrs     | Query   |  188 | Sending data  | /*DEREK*/select ctlno, count(*) AS count from (omitted)
| 150021 | root    | localhost         | amrs     | Query   |  122 | Sending data  | /*DEREK*/select ctlno, count(*) AS count from (omitted)
| 150023 | root    | localhost         | amrs     | Query   |   56 | Sending data  | /*DEREK*/select ctlno, count(*) AS count from (omitted)

Я не перезагрузил страницу или что-то еще. set_time_limit (0) вызывается в начале скрипта. Раздражает то, что страница, кажется, связана с последней запущенной страницей. Поэтому, если я убью 150018, ничего плохого не произойдет, но если я убью 150023 до того, как появится другой, на странице появится сообщение об ошибке «Выполнение запроса прервано». 150018 в конечном итоге завершит работу самостоятельно, но это не принесет пользы, потому что сценарий / страница не получит его.

У кого-нибудь есть идеи?

РЕДАКТИРОВАТЬ: Показать полный список процессов дает следующее (некоторые строки удалены для краткости и конфиденциальности):

+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
| Id     | User    | Host              | db       | Command | Time  | State        | Info 
+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
| 147385 | root    | localhost:44560   | amrs     | Sleep   | 14021 |              | NULL
| 150248 | root    | localhost         | NULL     | Query   |     0 | NULL         | show full processlist
| 150251 | root    | localhost         | amrs     | Query   |     1 | statistics   | /*DEREK*/select ctlno, count(*) AS count from (snip)
+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------

php,mysql,

8

Ответов: 1


1 принят

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

Собираетесь ли вы через прокси-сервер при посещении веб-сайта?

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

Итак, при выполнении некоторых долго выполняющихся запросов, занимающих более минуты, я бы увидел, что запросы начинают соединяться друг с другом, и я бы в конечном итоге посмотрел на список процессов с множеством запущенных идентичных запросов, каждый из которых разделен почти ровно 60 секунд!

Решением было заставить клиента обойти свой прокси-сервер для нашего сайта.

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

Извините, но я не могу вспомнить, какой прокси-сервер использовался в любом случае, как это было довольно много месяцев назад, и с тех пор я спал: - /

PHP, MySQL,
Похожие вопросы