Too many connections
MySQLの同時接続数が上限に達した場合に発生するエラー
概要
Too many connections は、MySQLサーバーへの同時接続数が設定された上限値(max_connections)に達した場合に発生するエラーです。アクセス集中時やコネクションリークが原因で発生します。
エラーメッセージ
ERROR 1040 (HY000): Too many connections
SQLSTATE[HY000] [1040] Too many connections
PDOException: SQLSTATE[HY000] [1040] Too many connections
原因
- アクセス集中: 同時アクセスが急増した
- コネクションリーク: 接続が正しくクローズされていない
- max_connectionsが低い: デフォルト値(151)が不足
- スロークエリ: 遅いクエリが接続を占有
- コネクションプールの設定不備: プールサイズが大きすぎる
解決策
1. 現在の接続状況を確認
| |
2. max_connectionsを増やす
一時的に変更(再起動で戻る):
| |
永続的に変更(my.cnf / my.ini):
| |
| |
3. 不要な接続を切断
| |
4. wait_timeoutを調整
| |
my.cnf:
| |
5. アプリケーション側でコネクションプールを設定
Laravel (config/database.php):
| |
Django (settings.py):
| |
Node.js (mysql2):
| |
6. コネクションリークを防ぐ
PHP:
| |
Python:
| |
7. 監視を設定
| |
推奨設定値の目安
| サーバースペック | max_connections | 備考 |
|---|---|---|
| 小規模(1-2GB RAM) | 100-200 | デフォルト付近 |
| 中規模(4-8GB RAM) | 300-500 | Webアプリ向け |
| 大規模(16GB+ RAM) | 500-1000 | 高負荷環境 |
MySQL の他のエラー
この記事は役に立ちましたか?