2026年9月25日
2026年9月25日
データベースの接続プールとコネクションタイムアウトの設定方法
はじめに
データベースの接続プールとコネクションタイムアウトは、WordPressサイトのパフォーマンスを大幅に向上させる重要な設定です。接続プールは、SQLリクエストが頻繁に発生する場合にデータベースとの接続を再利用し、その結果としてサーバー負荷を軽減します。一方、適切なコネクションタイムアウトの設定は、不要なリソース消費やタイムアウトによる障害を防ぎます。
症状・背景
このテーマが必要になる主な場面:
- ワンクリックで多数のデータベース操作を行う場合(たとえば大量の投稿作成)
- 高負荷時でのパフォーマンス低下
- SQLエラーによりサイトが非表示になる頻度増加
- 一連のSQLリクエストでタイムアウトする状況
手順・設定方法
ステップ1: MySQLの接続プール設定
# my.cnfファイルを開く
sudo nano /etc/mysql/my.cnf
# [mysqld]セクションに以下の行を追加または修正
[mysqld]
wait_timeout = 28800
interactive_timeout = 28800
# 接続プールの設定:innodb_buffer_pool_sizeが適切か確認
[mysqld]
innodb_buffer_pool_size = 128M # サーバーRAMに応じて調整してください
ステップ2: PHPの接続タイムアウト設定
# wp-config.phpファイルを開く
sudo nano /wp-content/wp-config.php
# WPDBオブジェクトをカスタマイズして、接続タイムアウトを設定
define('DB_CONNECTION_TIMEOUT', 10); # 接続のタイムアウト時間を10秒に設定
ステップ3: WordPressプラグインでの接続プール利用
# wp-content/plugins/wp-super-cache/settings.phpを開く(または適切なプラグインファイル)
sudo nano /wp-content/plugins/wp-super-cache/settings.php
# プラグイン設定で接続プールの有効化を確認する
define('W3TC_DB_POOL', true); # WP Super Cacheの接続プール利用を有効化します
ステップ4: 実践/トラブルシュート/監視
# MySQLの接続状態を監視
sudo mysqladmin -u root -p processlist
# 接続プールの使用状況を確認
SHOW POOL STATUS; # MySQL 5.7以降で使用可能なコマンド
# PHPのタイムアウト設定を確認する
phpinfo(); # php.iniファイルを確認
注意事項
- パフォーマンスへの影響: 过度な接続プール設定は、サーバー負荷を増大させる可能性があります。適切なサイズとタイムアウト時間を評価することが重要です。
- セキュリティ上の注意: 無効なタイムアウト設定は、攻撃者に利用され可能であるため、適切なセキュリティ対策を講じることが必要です。
- パフォーマンス/運用上の注意: 高負荷時のパフォーマンス改善には複数のアプローチが必要で、接続プールとコネクションタイムアウトはその一部に過ぎません。SQL最適化やキャッシュ利用も併用することをおすすめします。
まとめ
1. wait_timeout:データベースとの接続が無効になったときに待つ時間(秒)。
2. interactive_timeout:ユーザーレベルの接続が無効になったときに待つ時間(秒)。
3. innodb_buffer_pool_size:メモリに保持されるインデックスとデータの量。サーバーRAMに応じて調整が必要です。
4. DB_CONNECTION_TIMEOUT:PHP側での接続タイムアウト設定。
関連記事: