MySQL
Apache

メモリ食い過ぎてたのは、mysqlの設定が原因だった

More than 3 years have passed since last update.


ここまでの経緯


  • 仮想マシン上のWordPressが落ちるのはメモリが足りないからだ

  • httpdのプロセスが立ち上がりすぎてたので、極力増えないようにした

  • 今度はMySQLがメモリを食い過ぎてた。多分犯人はこいつだ


仮想マシンの環境

ハードウェアやミドルウェアについて、

この件に関係ありそうなもの


  • メモリ 1GByte(1024MByte)

  • Webサーバ Apache/2.2.15 (Unix)

  • MySQL 5.6.25

MySQL5.6系では、メモリ消費多すぎたので設定変更した。という

主旨の情報が多数。


table_definition_cache の設定を変更する

table_definition_cacheの設定変更だけで、以上なメモリ消費は治まった。

/etc/my.cnf に以下の記述をする。


my.cnf

[mysqld]

table_definition_cache=400

そして再起動

# servise mysqld restart


メモリ消費状況

メモリ消費量は一気に減った。


設定直後

# free

total used free shared buffers cached
Mem: 1020288 246544 773744 92 4744 58528
-/+ buffers/cache: 183272 837016
Swap: 2064380 12996 2051384



しばらくブラウザアクセスしてから

# free

total used free shared buffers cached
Mem: 1020288 693968 326320 92 8180 70088
-/+ buffers/cache: 615700 404588
Swap: 2064380 12844 2051536



メモリ使用状況

ブラウザで何度かアクセスしたのちに、各プロセスを調べる。

MySQL による消費は減った。apacheでの消費は多いけど


mysqlによる消費

# ps aux | grep mysql

mysql 2304 0.1 9.4 782832 96536 pts/0


mysqlによる消費

# ps aux | grep mysql

root 2334 0.0 0.0 107456 940 pts/0 S+ 14:21 0:00 grep mysql


Apacheのメモリ消費状況

# ps aux | grep httpd

root 1697 0.0 1.1 311536 11660 ? Ss 13:14 0:00 /usr/sbin/httpd
apache 1699 0.0 3.1 334168 32488 ? S 13:14 0:00 /usr/sbin/httpd
apache 1700 0.0 5.1 354824 52636 ? S 13:14 0:00 /usr/sbin/httpd
apache 1701 0.0 5.1 354844 52660 ? S 13:14 0:00 /usr/sbin/httpd
apache 1702 0.0 5.1 354824 52636 ? S 13:14 0:00 /usr/sbin/httpd
apache 1703 0.0 5.8 371144 59416 ? S 13:14 0:01 /usr/sbin/httpd
apache 2009 0.0 4.0 343816 41532 ? S 13:15 0:00 /usr/sbin/httpd
apache 2012 0.0 5.1 354808 52604 ? S 13:15 0:00 /usr/sbin/httpd
apache 2013 0.0 5.1 354808 52600 ? S 13:15 0:00 /usr/sbin/httpd
apache 2014 0.0 5.1 354808 52600 ? S 13:15 0:00 /usr/sbin/httpd
apache 2015 0.0 5.1 354808 52600 ? S 13:15 0:00 /usr/sbin/httpd
root 2336 0.0 0.0 107456 940 pts/0 S+ 14:29 0:00 grep httpd



参考

MySQLでtable_definition_cacheの値を変更する

http://blog.ybbo.net/2015/12/26/change-table_definition_cache-on-mysql/