Apache"No spache left on device"錯誤與解決方法
1、錯誤現象
這是一個使用
創新互聯服務器的客戶案例,客戶反映在執行“apache start”啟動Apache時無報錯信息,但是網頁還是不能訪問。客戶的網站是基于Apache+PHP+Mysql的在線交易平臺,聽到客戶描述的現象后,反應應是防火墻屏蔽了HTTP端口或SELinux的問題,于是登錄服務器查看相關信息,如下圖。
從輸出可知,防火墻所有策略都處于開放狀態,并未所任何限制,而SELinux也處于關閉狀態,應該不是防火墻問題導致的。
既然不是防火墻攔截的問題,那么看看httpd進程是否存在及httpd端口是否正常啟動,操作過程如下圖。
這個操作首先查看了服務器上的httpd進程,發現并沒有httpd進程運行,同時httpd對應的端口80也并無啟動,于是重新啟動Apahce,在啟動Apache的過程中并沒有報錯,啟動完成后發現仍然沒有httpd進程運行,由此看來,應該是Apache內容出現了問題。
2、解決思路
在判斷是Apache的問題后,首先要看的是Apache的啟動日志,在查看Apache的error日志后,發現了一個可疑輸出,內容為:
No space left device:mod_rewrite:could not create rewrite_log_lock Configuration Failed
看到這個錯誤提示,感覺應該是磁盤空間耗盡導致的,于是趕緊查看系統所有磁盤分區,結果發現所有磁盤分區都還有很多可用空間,這有些奇怪了。
Linux下對磁盤空間的占用分為三個部分:物理磁盤、inode節點磁盤空間和信號磁盤空間。通過檢查服務器的物理磁盤空間,發現仍有很多剩余,因此被排除了物理磁盤空間的問題。接著通過“df -i”命令查看系統可用的inode節點,發現每個分區可用的inode還有很多,這樣inode節點問題也被排除了,那么應該是信號量磁盤空間耗盡導致的。
這里簡單介紹了Linux信號量相關的知識,信號量是一種鎖機制用于協調進程之間互斥的訪問臨界資源,以確保某種共享資源不被多個進程同時訪問。Linux系統的信號量是用于進程間通信的。它有兩種標準實現,分別是POSIX及System v,現在大多數Linux系統都實現了這兩種標準。這兩種標準都可用于進行線程間的通信,只是系統調用方式略有不同。
Syetem v信號量通過系統調用semget來創建,通過linux命令ipcs即可顯示進程間通信用的System v類型信號量及共享內存。
POSIX信號量可用于線程和線程間通信,并可分為有名和無名兩種。也可簡單理解為是否保存在磁盤上。有名的信號量會以文件形式保存在/dev/shm下,因此可用于不相關的進程間通信,而無名信號量只能用于線程間和父子進程間通過。
在對信號量有了簡單了解后,可以發現Apaceh使用的進程間通信方式應該是Syqtem v,因此可以通過ipcs命令查看和解決這個問題了。
3、解決問題
在解決這個問題之前,首先查看下Linux系統默認信號量的設置值是多少,執行如下命令:
[root@localhost ~]#cat /proc/sys/kemel/sem
250 32000 32 128
這四個輸出值的含義如下:
SEMMSL,此參數用于控制每個信號集的信號數。
SEMMNS,此參數用于控制整個Linux系統中信號的數量。
SEMOM,此參數用于控制每個semop系統調用可以執行的信號操作數。
SEMMNI,此內核參數用于控制整個Linux系統中信號集的數量。
接著通過ipcs命令查看httpd進程占用了多少信號量,執行如下命令:
[root@localhost ~]#ipcs -s|grep daemon
其中“daemon”是啟動Apahce進程的用戶,默認是daemon,也可能是nobody用戶,根據實際環境而定。執行完此命令后,發現很多基于daemon的信號量輸出,問題終于找到了。解決信息量耗盡的方法很簡單,通過ipcrm命令消除即可,最簡單方法是執行如下命令組合:
[root@localhost ~]#ipcs -s | grep nobody|perl -e 'while(<STDIN>)'{@=split(^s+/)};print
'ipcrm sem $a[1]'
執行完上面這個命令后,再次啟動Apache,然后查看是否有httpd進程啟動,可以看到,此時httpd進程啟動了,那么Apache也工作正常了。
當前題目:Apache"No spache left on device"錯誤與解決方法
標題來源:http://m.newbst.com/news17/105167.html
成都網站建設公司_創新互聯,為您提供關鍵詞優化、定制開發、App設計、標簽優化、網站制作、電子商務
廣告
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源:
創新互聯