MySQL プロセスリストの過剰な「スリープ」エントリにより「接続が多すぎます」エラーが発生する
問題:
「スリープ」状態の過剰なアイドル接続により、利用可能な接続が枯渇し、「接続が多すぎます」エラーが発生します。多数の接続が開いているにもかかわらず、この問題は解決しません。
背景:
- 「スリープ」接続は通常、PHP スクリプトが MySQL に接続し、クエリを実行するときに作成されます。
- Apache リクエストの数が同時に 50 を超えることはなく、PHP 接続に問題がある可能性があることが示唆されています。
my. cnf 構成:
max_connections = 450
thread_cache = 50
ログイン後にコピー
解決策:
1.長時間実行されている PHP プロセスを特定して修正する:
- データベース操作を実行せずに、PHP プロセスが長期間実行されていないことを確認します。
- 次の場合は、PHP スクリプトをデータベースから直ちに切断します。アクセスする必要はなくなりました。
2.クエリの最適化:
- 遅いクエリを検査して最適化し、実行時間を短縮します。
- これにより、サーバーの過負荷が軽減され、保留中の接続のバックログが減少します。
追加の考慮事項:
- max_connections を増やすことは問題を悪化させる可能性があるため、最適な解決策ではない可能性があります。
- データベースの負荷を軽減することを検討してください。
- Apache プロセスを監視して、接続が適切に閉じられ、不必要にポートを保持していないことを確認します。
以上が質問の形式と、MySQL の「スリープ」接続と「接続が多すぎます」エラーに焦点を当てた記事を念頭に置き、候補となるタイトルをいくつか示します。
Pに注目の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。