• 締切済み

レンタルサーバーで PHP+MySQL のサイトを作ってます。

レンタルサーバーで PHP+MySQL のサイトを作ってます。 極稀に、一部のクエリーが原因で、 MySQLのプロセスが大量にSleep状態で長時間滞留してしまう事態が生じ、 サーバーに高負荷をかけてしまいます。 これを解消するために、 $sql = "SHOW PROCESSLIST"; $result = mysql_query($sql); while ($row = mysql_fetch_array($result,MYSQL_NUM)){ $id = $row['0']; $time = $row['5']; if($time > 60) mysql_query("KILL {$id}"); } こんな感じのコードをcronで数分毎に実行し、問題のプロセスを停止させようと思ったのですが... どうなんでしょう? アドバイスを頂けないでしょうか。よろしくお願いします。

みんなの回答

noname#111181
noname#111181
回答No.1

「cronで数分毎に実行」というのはいけません。 サーバに余計に負荷がかかります。 ある時間(例:5秒)を決め、クエリーの戻りがそれ以上かかるようだったら処理を中断するようなスクリプトを組むべきです。 それ以前に、なぜクエリーが滞留するのか、その原因を突き止めるべきです。レンタルしているのでしたら、同時に複数のクエリーを飛ばさないようにすべきです。

すると、全ての回答が全文表示されます。

専門家に質問してみよう