【事象】
Apacheの起動・再起動を行った際に、下記のエラーが出てApacheが立ち上がらない
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
/var/log/httpd/error_log を確認すると以下のようなメッセージが表示されている
No space left on device: AH00023: Couldn't create the ssl-cache mutex
【原因】
原因としては、セマフォが不足しているかららしい。
セマフォの状態は、ipcsコマンドで確認できます。
ipcs -s
------ セマフォ配列 --------
キー semid 所有者 権限 nsems
0x00000000 1343490 apache 600 1
0x00000000 1376260 apache 600 1
0x00000000 1376261 apache 600 1
0x00000000 1376262 apache 600 1
0x00000000 1376263 apache 600 1
0x00000000 1343496 apache 600 1
0x00000000 1343497 apache 600 1
0x00000000 1343498 apache 600 1
0x00000000 1343499 apache 600 1
0x00000000 1343500 apache 600 1
0x00000000 1376269 apache 600 1
ここでApache関連のセマフォがずらっと大量に並んでいたら、
Apacheユーザーのセマフォに何らかの問題が発生して、Apacheの起動を妨げている可能性があるので、Apacheのセマフォをクリアにする必要があります。
そもそも、セマフォってなに?
セマフォ(Semaphore)は、オペレーティングシステムの中で、複数のプロセスが同時に行われる際に、それらが互いに干渉しないように制御するためのメカニズムです。簡単に言うと、セマフォはプロセス間の割り込み処理をコントロールするための信号システムのことを指します。
Apacheサーバーの再起動に失敗した原因として考えられるのは、システムがセマフォのリミットに達し、新たなセマフォを割り当てることができなくなった為。
システムで設定されているセマフォの最大数を超える、多くのプロセスやスレッドが同時に実行されることによりapacheの再起動に失敗しておりました。
[対策]
上記、理由によりApache関連のセマフォを解放する為、下記コマンドを実行する。
実行すると無事にapacheの再起動が出来ました。
ipcs -s | grep apache | awk ' { print $2 } ' | xargs ipcrm sem