[英]MySQL Query Restarting Every 60 Seconds?
我有一個奇怪的問題。 我正在對來自PHP的非常大的表運行MySQL查詢。 查詢時間超過一分鍾,但這不是我的問題。 看起來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)
+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
我之前幾次見過類似的問題,您的問題聽起來與我在以前的網站上遇到的問題非常相似。
您訪問網站時是否要通過代理服務器?
我的網站發生的情況是,來自同一公司內一組特定用戶的查詢是通過其代理服務器定向的,代理服務器自行決定,如果60秒鍾內未收到任何響應,則它將發出再次發出Web請求,而沒有通知客戶端瀏覽器正在發生這種情況!
因此,在執行某些長時間運行的查詢需要一分鍾以上的時間后,我會看到查詢開始相互混合,最終我看到一個運行有相同查詢負載的進程列表,每個查詢之間幾乎被分隔開恰好60秒!
解決方案是讓客戶端繞過我們站點的代理服務器。
當客戶端將其代理服務器升級到最新版本時,解決了這個完全相同的問題的第二個實例。
很抱歉,但是我不記得在哪種情況下都使用了什么代理服務器,就像幾個月前一樣,從那時起我就睡覺了:-/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.