19 January
2011

apache 起動せず

セマフォ (semaphore) の枯渇

■症状
apache が
 /etc/init.d/httpd restart
にて、立ち上がらなくなりました。厳密には、上記
init script で
 [ OK ]
と返されるものの、「process がない」という症状。


■環境
冒頭でお断りしておきますが、apache の version は
 1.3.41
ですので、ちと古いです。os は redhat linux
 kernel: 2.4.20
でした。こちらも、
 red hat linux 7.3
ですので、かなり古い環境。


■ログ
□/var/log/message
起動時の log は

Jan 18 07:57:54 ns1 httpd: httpd startup succeeded
であり、有効な情報がありません。

□/var/log/httpd/error_log
手掛かりは、こちらにありました。これ
semget: No space left on device
ですね。

date / time も記録されておらず、わたくしこの文言、
初めてみました。


■推察
log の "no space" から当然、
・disk
・memory
を疑いましたが、df / free などで簡単に確認するも、
異常なし。crack されたかも、とも思い、かなり沈滞。


■調査
気を取り直して [google: semget: No space left on
device
] にて、みてみました。

結果、辿り着き、よき情報を戴いた web site が此処
http://cast-a-spell.at.webry.info/200805/article_13.html
http://senyou.plus-server.net/topic.php?go=topic&num=34
でした。


■検証
上記 web site の知見に従い、セマフォ [google:
semaphore
] をみてみる
unchor@rescue:/var/log/httpd# ipcs -s | grep apache
0x00000000 2359299 apache 600 1
0x00000000 3112964 apache 600 1
0x00000000 3211269 apache 600 1
0x00000000 4620294 apache 600 1
....これが全部で 125 レコードくらい....
と、多分これが原因なのでしょう [google: linux ipcs
command
]。


■解法
上記 web site にありました、
ipcs -s | grep apache | perl -e 'while (<STDIN>)
{ @a=split(/\s+/); print `ipcrm sem $a[1]`}'
にて、上記満杯のセマフォをクリア。次いで、
/etc/init.d/httpd restart
と apache を再起動。無事に process があることを
確認し、一件落着 [google: linux ipcrm command]。


■追検証
事後に、[google: apache セマフォ] などとして検索、
/etc/init.d/httpd restart
を繰り返すことが一因であるかも知れない、との記述
も確認しました。

わたくしの環境では、cron で定期的に apache を再
起動する環境が、2環境ありまして、今回の問題はそ
のうちのひとつの環境のみでした。他方の環境で、
 ipcs -s
にてセマフォを確認するも、全く正常でしたので、原
因は単純なものではないのでしょう。

そもそも何故 cron にて定期的に apache を再起動す
るかと申しますと、上記2環境に限り、apache が2
週 〜 3週くらいで落ちてしまうことがあったから、
対症療法的に再起動をかける設定にしていたのでした。
apache はかなりあちらこちらの環境で連続稼動して
いるのですが、logrotate の kill -HUP で落ちてし
まうのは、この2環境のみでして、これもまた謎では
あるのです(調査、根本的な解決をせずに、再起動す
ることで凌いでいたのです。)。


■afterword
今回諸々初の経験でした。ipcs / ipcrm command、初
めて知りましたし、当然、初めて使いました。

解法を掲載されておられた先達の方に感謝します。


Posted by unchor at 11:00 | Comments (0)
<< /etc/hosts の loopback address | Main | HFS+ (mac os) HDD のデータ移行: I >>
Comments
Re: apache 起動せず

perl 引数部の "while" 句に誤りがあったので修正しました。

□誤: while ()
□正: while (<STDIN>)

Posted by: unchor at April 05,2011 09:20
Post a comment