Apache"No spache left on device"錯(cuò)誤與解決方法

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

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

本文標(biāo)題:Apache"No spache left on device"錯(cuò)誤與解決方法
當(dāng)前URL:http://www.bm7419.com/news/105167.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、企業(yè)網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、面包屑導(dǎo)航、網(wǎng)站維護(hù)建站公司

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)