Apache start [OK]
とは出るものの、psコマンドで確認してもプロセスは立ち上がらず。
Apacheのエラーログを見てみると、
[Tue Feb 23 09:51:10 2016] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.14907) (5)というログが出ている。
df コマンドでディスクの空き容量を確認しても、freeでメモリの空き容量を見ても特に問題ないのだが、 何度Apacheを起動してもこのエラーで上がってこない。
AWSでロードバランサ使ってとかなら、とりあえずこのサーバ外して調べたかったのだが、 DNSラウンドロビンで貧乏臭く運用していると簡単に外せないのでこういう時に困る。
止まっていたのはフロントエンドのアプリケーションサーバで他のサーバに影響を与えないので、 とりあえず、何も考えなしにrebootしてみたところ、問題なくApacheが起動した。
とりあえず一難去った。
原因は何だったのか?
後から調べてみると、「セマフォが限界値に達してしまったために新しいセマフォを使ってアプリケーションを起動することができなくなってしまった」時にこのエラーが出てくるようだ。Apacheユーザのセマフォを確認
# ipcs -s ------ セマフォ配列 -------- キー semid 所有者 権限 nsems 0x00000000 0 root 600 1 0x00000000 32769 root 600 1 0x00000000 262146 apache 600 1 0x00000000 294915 apache 600 1
セマフォの限界値を確認
# /sbin/sysctl -a | grep sem kernel.sem = 250 32000 32 128セマフォの限界値は128ということになるらしい。
Apacheの再起動時に子プロセスが残ったままApacheを起動しようとして 溜まっていくことがあるとのこと。
# for i in `ipcs -s | awk '/httpd/ {print $2}'`; do (ipcrm -s $i); doneのコマンドで残ってる子プロセスをバシッとKILLできるとのこと。
監視プログラムで、
Apache調子悪い時に、 Apache stopさせる、セマフォのお掃除する、Apache startさせる
と言った感じで復帰させるように書いておくのも良いかもしれない。
セマフォの限界値を引き上げる
限界値を引き上げても一時しのぎにしかならないのかもしれないけれど、 128はちょっと少なすぎるんじゃないかなぁと感じるので、設定値を引き上げる。/etc/sysctl.conf に以下の行を追加
# Semaphore kernel.sem = 250 32000 32 1024kernel.semのパラメータは、
1つ目:セマフォ識別子あたりの最大セマフォ数
2つ目:システム全体のセマフォ数
3つ目:セマフォコールあたりの最大演算子数
4つ目:システム全体のセマフォ識別子数
ということで、2つ目のパラメータを増やしているところも見かけたが、 とりあえず、4つ目のパラメータのみを増やしてみた。
修正をしたら
# /sbin/sysctl -p # /sbin/sysctl -a | grep semで設定が反映されているかを確認する。
とりあえず、これで様子見。
参考にしたサイト
・apacheのエラーログに「No space left on device: Couldn't create accept lock 」という文字が出力されていました。https://teratail.com/questions/367
・Apache: No space left on device: Couldn’t create accept lock
https://major.io/2007/08/24/apache-no-space-left-on-device-couldnt-create-accept-lock/
・[emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.31012)
http://blog.livedoor.jp/kyamanashi/archives/51020772.html
・そういえばセマフォというのがありまして・・・ https://www.usptomo.com/PAGE=20130329APACHE
・システムパラメーターのチューニング【Linux】
http://software.fujitsu.com/jp/manual/manualfiles/m110009/b1x10033/03z200/b0033-00-02-01-01.html
0 コメント:
コメントを投稿