2000 個の仮想ホストで Apache を再起動すると問題が発生しました。
CentOS 5.8 64 ビットで Apache 2.2.22 + PHP 5.4.6 を使用しています。
再起動しようとすると、次のように表示されます。
/etc/init.d/httpd restart
Stopping httpd: [FAILED]
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
[FAILED]
killall -9 httpd
しばらくは大丈夫だったのですが、また同じことが起きてしまいます : /
答え1
Apache は最初から実行されていなかったように見えます。少なくとも、init スクリプトが起動した PID では実行されていません。「ps auxwww」の出力を確認してください (またはここで提供してください)。
私の直観では、Apache のルート プロセスが終了し、子プロセスは存続してポート 80 でリッスンしている状態になっていると思われます。その場合は、Apache のエラー ログとシステム ログを調べて、ルート プロセスを終了している原因を確認してください。
その他の可能性としては、init スクリプトの外部で Apache を手動で起動している何かがあるか、ポート 80 でリッスンしている何かがある可能性があります (ただし、killall -9 httpd が機能する理由は説明されません)。
答え2
それはパッケージの問題でした。私は webtactic リポジトリから httpd を入手しました。Lxcenter のものに変更したところ、非常にうまく動作しています ;)