MySQLのスレッド数について

Linuxで使用できるデータベースでは、MySQLしか知らないし、WordPlessを使っている事から、稼働中のLinuxサーバでもMySQLを使っています。しかし、メモリの空きが容量がほとんど無い状態で稼働しているにハード(玄箱HG)の制限からメモリを追加できないので、MySQLの起動スレッド数を減らしメモリの空き容量を増やす事にしました。

DebianのSargeでは、MySQLのスレッドが、プロセスとして確認できます。topコマンドで確認すると、複数のmysqldプロセスが存在しています。これは、Sargeで使用しているスレッドライブラリ(LinuxThreadsライブラリ)の影響です。

このスレッドライブラリの場合、スレッドがプロセスのように見えてしまいます。(etchだとNPTLを使っているため、このような現象は起こりません。)

使用しているスレッドライブラリを確認するためには、以下のコマンドで確認できます。

user01@kurobox:~$ getconf GNU_LIBPTHREAD_VERSION
linuxthreads-0.10

現在の設定値の確認

まずは、MySQLにログインします。その後、次のコマンドで現在の設定状況を確認できます。

user01@kurobox:~$mysql -u myswl -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1049 to server version: 4.0.24_Debian-10sarge3-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show variables;

この中で、スレッド数に関係のある設定値は、次の設定値です。

thread_cache_size
通常スレッドは、クライアントからの接続ごとに生成され、その後破棄されるが、thread_cache_seize の数だけ破棄されずに再利用することが出来る。

この値の数だけスレッドが待機することになるのですが、デフォルトでは、0が設定されていました。

InnoDBの使用停止によるスレッドの削減

デフォルトでは、InnoDBを使用する設定になっているので設定ファイル(Debianのパッケージ使用の場合、/etc/mysql/my.cnf)に使用しない設定を追加します。

設定ファイル内の[mysqld]に「skip-innodb」の一行を追加します。あとは、MySQLを再起動すれば、スレッド数が減っているはずです。

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする