apacheとwordpress

なんだか知らないけど、最近、うちのサーバがよく固まる。なんでやろうと不思議に思って、放ったらかしにしてたけど、ちゃんと調べてみた。

なんだか知らないけど、忘れた頃にサーバが固まる。
このサーバが固まると、DNSが引けなくなるので、外のWEBが見られなくなるし、外からこのページが見られなくなる。

なんでやろ。

ふと、思い立って、ab

ab -n 1000 -c 100 http://www.cagylogic.com/

あっさり固まりました。なんだ、apacheがスワップアウトしてたのか。

/usr/sbin/apache2ctl -V

Server MPM:    Prefork
  threaded:    no
    forked:    yes (variable process count)

の行が表示されることを確認。というか、PHPでWordpress動かしてるんだから、Preforkなんだけどさ。

たしかこのサーバは512Mのメモリを積んでいたはず。

ということで、/etc/apache2/apache.confのmpm_prefork_moduleのあたりを見直す。

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

いやいやいやいや。そりゃ無理だっペ。

一旦再起動して、freeコマンド

            total       used       free     shared    buffers     cached
Mem:        508224     243804     264420          0      19380      90832
-/+ buffers/cache:     133592     374632
Swap:      1535996          0    1535996

ま、そんなもんですね。

top – 03:31:33 up 8 min,  1 user,  load average: 0.12, 0.12, 0.07
Tasks:  88 total,   1 running,  87 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3%us,  0.0%sy,  0.0%ni, 98.3%id,  1.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    508224k total,   317632k used,   190592k free,    20060k buffers
Swap:  1535996k total,        0k used,  1535996k free,    99916k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
1261 www-data  20   0 56212  31m 4180 S  0.0  6.4   0:01.38 apache2           
1260 www-data  20   0 47664  23m 4140 S  0.0  4.6   0:00.75 apache2           
1264 www-data  20   0 46340  21m 4032 S  0.0  4.4   0:00.76 apache2           
1266 www-data  20   0 46340  21m 4032 S  0.0  4.4   0:00.75 apache2           
1267 www-data  20   0 46316  21m 4048 S  0.0  4.4   0:00.80 apache2           
1263 www-data  20   0 46204  21m 4016 S  0.0  4.3   0:00.84 apache2           
  854 mysql     20   0  153m  20m 5700 S  0.0  4.2   0:01.49 mysqld            
1262 www-data  20   0 46132  20m 3480 S  0.0  4.2   0:00.58 apache2           
  824 bind      20   0 55424  15m 2360 S  0.0  3.0   0:00.16 named             
1257 root      20   0 31816 7316 4000 S  0.0  1.4   0:00.38 apache2           

topで見ると、apache一本あたり、20Mから30Mのメモリの使用。ちうことは、maxclientは15とすると、30M×15=450Mなんで、このへんが壁かと。

<IfModule mpm_prefork_module>
    StartServers          3
    MinSpareServers       3
    MaxSpareServers      10
    MaxClients           15
    MaxRequestsPerChild  30
</IfModule>

ということで、apache2.confは、こんな感じに。

StartServersとMaxSpareServersは3でかなり少なめに。MaxClientは先程の計算により15。増やせたとしても20だとぎりぎりになっちゃうからねぇ。まぁ15でいいかな。MaxClientが15なら、MaxSpareSerrversは3割引で10。MaxRequestsPerChildは、どうしようか迷った挙句、30に。あんまり長生きしてメモリリークしても嫌だし。でも、がんがん死ぬのも嫌だし。

この設定でapacheをリスタート。

ab再挑戦。

ab -n 1000 -c 100 http://www.cagylogic.com/

今度は固まりません。いい感じ。もちろん、1000もリクエストやったら、むちゃくちゃ時間がかかるので、途中で止めたけど。

前よりも、遅くなってるはずなんだけど、気分的に、固まらない方がいいんだろうな。

ちょっと、この設定で続けてみよう。

ページアウトって今のご時世、意味あるのかな。現実的な速度が出なくなるならあんまり意味が無いような。。。まぁ無いとは言えないか。。。

「apacheとwordpress」への2件のフィードバック

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください