apache 启动失败错误排查
排查思路
1? ?查看報錯信息
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
提示可以通過 systemctl status httpd.service 和 journalctl 命令 加 -xe 參數查看一些信息?
但是通過查看這兩個的報錯并沒有找到有效的信息?
2通過查看錯誤日志? error.log??
發現如下報錯[Wed May 23 20:01:24.720939 2018] [core:emerg] [pid 5103] (28)No space left on device: AH00023: Couldn't create the rewrite-map mutexAH00016: Configuration Failed
通過百度發現是 ipc不足
(1) 確認是否是硬盤空間不足;結果發現不是空間的問題;
(2) 網上查看了下,發現是ipc不足。可以使用ipcs -s(|grep apache的group)
Apache can create the "accept lock" is with a semaphore. A semaphore is an inter-process communication tool that is used by Apache to communicate with it's child processes. This error message may mean that Apache couldn't create a new semaphore.
解決辦法
使用ipc -s 查看果然zabbix占用了太多的ipc空間
處理:
?
(1) 可以使用$ ipcrm -s <semid>清理指定?semaphore?
?但是一個個刪除太慢了
(2) 也可以使用下面命令,清理所有的semaphore,?注:替換nobody為apache對應的用戶名
?
for semid in `ipcs -s | grep nobody | cut -f2 -d" "`;
do ipcrm -s $semid; done
?
改為? for? semid? in? `ipcs -s?` | grep? zabbix? |? cut -f2 "";
do ipcrm -s $semid;? done?
清除掉所有的semid??
重新啟動httpd? 啟動成功
? ?
IPC介紹:
IPC進程間通信(Inter-Process Communication)就是指多個進程之間相互通信,交換信息的方法。Linux IPC基本上都是從Unix平臺上繼承而來的。主要包括最初的Unix IPC,System V IPC以及基于Socket的IPC。另外,Linux也支持POSIX IPC。
IPC具體包含:(1)信號量,用來管理對共享資源的訪問 (2)共享內存,用來高效地實現進程間的數據共享 (3)消息隊列,用來實現進程間數據的傳遞。我們把這三種工具統稱為System V IPC的對象,每個對象都具有一個唯一的IPC標識符(identifier)。要保證不同的進程能夠獲取同一個IPC對象,必須提供一個IPC關鍵字(IPC key),內核負責把IPC關鍵字轉換成IPC標識符。 ??使用ipcs命令可以查看當前使用情況,使用ipcs -l查看系統配置參數。
?
總結
以上是生活随笔為你收集整理的apache 启动失败错误排查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java切面类关键字_AspectJ 入
- 下一篇: Android 友盟的计数功能,友盟统计