MariaDB の自動切断時間を設定してサーバーリソースを節約する方法
MariaDB 自動切断時間と設定方法
自動切断時間:
デフォルトでは、自動切断時間は10時間です。つまり、接続が10分間アイドル状態になると、自動的に切断されます。
設定方法:
自動切断時間は、いくつかの方法で設定できます。
- MariaDB 設定ファイル:
wait_timeout = <秒数>
例:自動切断時間を5時間に設定するには、
wait_timeout = 18000
- コマンドライン:
mysql> SET wait_timeout = <秒数>;
mysql> SET wait_timeout = 18000;
- クライアントライブラリ:
ほとんどのクライアントライブラリは、接続タイムアウトを設定するオプションを提供しています。詳細は、ライブラリのドキュメントを参照してください。
注意事項:
- 自動切断時間を短く設定すると、接続が頻繁に切断される可能性があります。
- 自動切断時間は、接続の使用方法やサーバーの負荷に応じて調整する必要があります。
補足:
- MariaDB 10.2 以降では、
interactive_timeout
という新しい設定パラメータが導入されました。これは、ユーザーが対話的にクエリを実行している場合のタイムアウト時間を設定します。 - 自動切断は、接続がアイドル状態になった場合にのみ発生します。つまり、クエリを実行している接続は、自動的に切断されません。
# /etc/my.cnf
[mysqld]
wait_timeout = 18000
mysql -uroot -p
mysql> SET wait_timeout = 18000;
mysql> SHOW VARIABLES LIKE 'wait_timeout';
クライアントライブラリ (Python の場合):
import mysql.connector
connection = mysql.connector.connect(
user='root',
password='password',
database='database',
host='localhost',
port=3306,
connection_timeout=18000,
)
cursor = connection.cursor()
cursor.execute("SELECT * FROM table")
for row in cursor:
print(row)
cursor.close()
connection.close()
出力:
+-------+-------+
| id | name |
+-------+-------+
| 1 | John |
| 2 | Mary |
+-------+-------+
解説:
- 上記のコードでは、自動切断時間を5時間に設定しています。
- コマンドラインで設定する場合、
SET wait_timeout
コマンドを使用して、wait_timeout
変数の値を変更します。 - クライアントライブラリを使用する場合は、
connection_timeout
パラメータを使用して、接続タイムアウトを設定できます。
MariaDB 自動切断時間の設定方法:その他の方法
環境変数
Linux の場合:
export MYSQL_WAIT_TIMEOUT=18000
Windows の場合:
set MYSQL_WAIT_TIMEOUT=18000
MYSQL_WAIT_TIMEOUT
環境変数を設定することで、すべての MariaDB クライアント接続の自動切断時間を設定できます。
クライアントオプション
多くの MariaDB クライアントは、コマンドラインオプションを使用して自動切断時間を設定できます。
例:MySQL クライアントの場合:
mysql -uroot -p --wait-timeout=18000
--wait-timeout
オプションを使用して、接続の自動切断時間を設定できます。
.my.cnf ファイル
概要:
.my.cnf
ファイルは、MySQL クライアントの設定を保存するためのファイルです。このファイルを使用して、自動切断時間を含むさまざまな設定を指定できます。
~/.my.cnf
ファイルを作成します。- 以下の内容をファイルに追加します。
[client]
wait_timeout = 18000
- ファイルを保存して、MySQL クライアントを再起動します。
.my.cnf
ファイルを使用して、個々のユーザーまたはグループの自動切断時間を設定できます。
MariaDB 設定ファイル
MariaDB 設定ファイル (/etc/my.cnf
など)を使用して、サーバー全体の自動切断時間を設定できます。
[mysqld]
wait_timeout = 18000
MariaDB 設定ファイルを使用して、すべてのクライアント接続の自動切断時間を設定できます。
mariadb