Apache"No spache left on device"錯誤與解決方法

2021-03-14    分類: 網(wǎng)站建設(shè)

Apache"No spache left on device"錯誤與解決方法
1、錯誤現(xiàn)象
這是一個使用創(chuàng)新互聯(lián)服務(wù)器的客戶案例,客戶反映在執(zhí)行“apache start”啟動Apache時無報錯信息,但是網(wǎng)頁還是不能訪問。客戶的網(wǎng)站是基于Apache+PHP+Mysql的在線交易平臺,聽到客戶描述的現(xiàn)象后,反應(yīng)應(yīng)是防火墻屏蔽了HTTP端口或SELinux的問題,于是登錄服務(wù)器查看相關(guān)信息,如下圖。
從輸出可知,防火墻所有策略都處于開放狀態(tài),并未所任何限制,而SELinux也處于關(guān)閉狀態(tài),應(yīng)該不是防火墻問題導(dǎo)致的。
既然不是防火墻攔截的問題,那么看看httpd進(jìn)程是否存在及httpd端口是否正常啟動,操作過程如下圖。
這個操作首先查看了服務(wù)器上的httpd進(jìn)程,發(fā)現(xiàn)并沒有httpd進(jìn)程運行,同時httpd對應(yīng)的端口80也并無啟動,于是重新啟動Apahce,在啟動Apache的過程中并沒有報錯,啟動完成后發(fā)現(xiàn)仍然沒有httpd進(jìn)程運行,由此看來,應(yīng)該是Apache內(nèi)容出現(xiàn)了問題。
2、解決思路
在判斷是Apache的問題后,首先要看的是Apache的啟動日志,在查看Apache的error日志后,發(fā)現(xiàn)了一個可疑輸出,內(nèi)容為:
No space left device:mod_rewrite:could not create rewrite_log_lock Configuration Failed
看到這個錯誤提示,感覺應(yīng)該是磁盤空間耗盡導(dǎo)致的,于是趕緊查看系統(tǒng)所有磁盤分區(qū),結(jié)果發(fā)現(xiàn)所有磁盤分區(qū)都還有很多可用空間,這有些奇怪了。
Linux下對磁盤空間的占用分為三個部分:物理磁盤、inode節(jié)點磁盤空間和信號磁盤空間。通過檢查服務(wù)器的物理磁盤空間,發(fā)現(xiàn)仍有很多剩余,因此被排除了物理磁盤空間的問題。接著通過“df -i”命令查看系統(tǒng)可用的inode節(jié)點,發(fā)現(xiàn)每個分區(qū)可用的inode還有很多,這樣inode節(jié)點問題也被排除了,那么應(yīng)該是信號量磁盤空間耗盡導(dǎo)致的。
這里簡單介紹了Linux信號量相關(guān)的知識,信號量是一種鎖機(jī)制用于協(xié)調(diào)進(jìn)程之間互斥的訪問臨界資源,以確保某種共享資源不被多個進(jìn)程同時訪問。Linux系統(tǒng)的信號量是用于進(jìn)程間通信的。它有兩種標(biāo)準(zhǔn)實現(xiàn),分別是POSIX及System v,現(xiàn)在大多數(shù)Linux系統(tǒng)都實現(xiàn)了這兩種標(biāo)準(zhǔn)。這兩種標(biāo)準(zhǔn)都可用于進(jìn)行線程間的通信,只是系統(tǒng)調(diào)用方式略有不同。
Syetem v信號量通過系統(tǒng)調(diào)用semget來創(chuàng)建,通過linux命令ipcs即可顯示進(jìn)程間通信用的System v類型信號量及共享內(nèi)存。
POSIX信號量可用于線程和線程間通信,并可分為有名和無名兩種。也可簡單理解為是否保存在磁盤上。有名的信號量會以文件形式保存在/dev/shm下,因此可用于不相關(guān)的進(jìn)程間通信,而無名信號量只能用于線程間和父子進(jìn)程間通過。
在對信號量有了簡單了解后,可以發(fā)現(xiàn)Apaceh使用的進(jìn)程間通信方式應(yīng)該是Syqtem v,因此可以通過ipcs命令查看和解決這個問題了。
3、解決問題
在解決這個問題之前,首先查看下Linux系統(tǒng)默認(rèn)信號量的設(shè)置值是多少,執(zhí)行如下命令:
[root@localhost ~]#cat /proc/sys/kemel/sem
250 32000 32 128
這四個輸出值的含義如下:
SEMMSL,此參數(shù)用于控制每個信號集的信號數(shù)。
SEMMNS,此參數(shù)用于控制整個Linux系統(tǒng)中信號的數(shù)量。
SEMOM,此參數(shù)用于控制每個semop系統(tǒng)調(diào)用可以執(zhí)行的信號操作數(shù)。
SEMMNI,此內(nèi)核參數(shù)用于控制整個Linux系統(tǒng)中信號集的數(shù)量。
接著通過ipcs命令查看httpd進(jìn)程占用了多少信號量,執(zhí)行如下命令:
[root@localhost ~]#ipcs -s|grep daemon
其中“daemon”是啟動Apahce進(jìn)程的用戶,默認(rèn)是daemon,也可能是nobody用戶,根據(jù)實際環(huán)境而定。執(zhí)行完此命令后,發(fā)現(xiàn)很多基于daemon的信號量輸出,問題終于找到了。解決信息量耗盡的方法很簡單,通過ipcrm命令消除即可,最簡單方法是執(zhí)行如下命令組合:
[root@localhost ~]#ipcs -s | grep nobody|perl -e 'while(<STDIN>)'{@=split(^s+/)};print
'ipcrm sem $a[1]'
執(zhí)行完上面這個命令后,再次啟動Apache,然后查看是否有httpd進(jìn)程啟動,可以看到,此時httpd進(jìn)程啟動了,那么Apache也工作正常了。

當(dāng)前題目:Apache"No spache left on device"錯誤與解決方法
標(biāo)題來源:http://www.bm7419.com/news17/105167.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、定制開發(fā)App設(shè)計、標(biāo)簽優(yōu)化網(wǎng)站制作、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站