基本的に、次の場合にスリープ状態で接続を取得します:
- PHPスクリプトはMySQLに接続します
- いくつかのクエリが実行されます
- 次に、PHPスクリプトは時間がかかるいくつかの処理を実行します
- DBから切断せずに
- そして最後に、PHPスクリプトは終了します
- これは、MySQLサーバーから切断されることを意味します
したがって、データベース側で実際に何もしなくても、接続されたままのPHPプロセスが多数ある場合、通常、多くのプロセスがスリープ状態になります。
基本的な考え方です。つまり、実行時間が長すぎるPHPプロセスがないことを確認してください。または、データベースにアクセスする必要がなくなったらすぐに強制的に切断してください。
もう1つ、サーバーに負荷がかかっているときによく見られることです:
- Apacheに来るリクエストはますます増えています
- これは、生成するページが多いことを意味します
- 各PHPスクリプトは、ページを生成するためにDBに接続し、いくつかのクエリを実行します
- DBサーバーの負荷が増加するにつれて、これらのクエリにはますます時間がかかります
- これは、より多くのプロセスが積み重なっていくことを意味します
役立つ解決策は、クエリにかかる時間を短縮することです。つまり、最も長いクエリを最適化します。