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側での接続タイムアウト設定。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲