php进程SIGBUS,SIGSEGV错误
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
| 本文通過(guò) OscPress 同步至oschina,最新版本請(qǐng)查看原文: https://www.cellmean.com/?p=1048 |
最近 在OSX 開(kāi)發(fā)Wordpress,nginx偶爾會(huì)出現(xiàn)502錯(cuò)誤,查看日志發(fā)現(xiàn):
2016/07/15 12:44:28 [error] 239#0: *5670 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: dev.cellmean.com, request: “GET /%e6%b5%8b%e8%af%95%e6%a0%87%e9%a2%98/ HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “dev.cellmean.com”, referrer: “http://dev.cellmean.com/%e6%b5%8b%e8%af%95%e6%96%87%e7%ab%a0%e5%90%8c%e6%ad%a5%e5%88%b0-osc/”
…
似乎跟上游的php-fpm有關(guān),查看php-fpm.log:
[15-Jul-2016 12:44:28] WARNING: [pool www] child 79191 exited on signal 11 (SIGSEGV) after 18.827492 seconds from start
[15-Jul-2016 12:44:28] NOTICE: [pool www] child 79349 started
…
可以看到出現(xiàn)的時(shí)間跟nginx的時(shí)間是一致的,php進(jìn)程池遇到(SIGSEGV)錯(cuò)誤, 重啟了。關(guān)閉了對(duì)nginx請(qǐng)求的處理。
在日志的其他地方還能看到另一個(gè)信號(hào)(SIGBUS) :
[15-Jul-2016 20:41:58] NOTICE: [pool www] child 86825 started
[15-Jul-2016 20:44:59] WARNING: [pool www] child 79193 exited on signal 10 (SIGBUS) after 14402.816372 seconds from start
…
關(guān)于這兩個(gè)信號(hào)的說(shuō)明:http://blog.csdn.net/haogaoming123/article/details/42082483
涉及共享內(nèi)存的管理就不能不提到訪問(wèn)共享內(nèi)存對(duì)象。談到訪問(wèn)共享內(nèi)存對(duì)象就要留神“SIGSEGV和SIGBUS”這兩個(gè)信號(hào)。系統(tǒng)分配內(nèi)存頁(yè)來(lái)承載內(nèi)存映射區(qū),由于內(nèi)存頁(yè)大小是固定的,所以存在多余的頁(yè)空間空閑,比如待映射文件大小為5000 bytes,內(nèi)存映射區(qū)大小也為5000 bytes。而一個(gè)內(nèi)存頁(yè)大小4096,系統(tǒng)勢(shì)必要分配兩頁(yè)來(lái)承載,這時(shí)空閑的有效空間為從5000-8191,如果進(jìn)程訪問(wèn)這段地址空間也不會(huì)發(fā)生錯(cuò)誤。但是要超出8191,就會(huì)收到SIGSEGV信號(hào),導(dǎo)致程序停止。 關(guān)于SIGBUS信號(hào)的來(lái)歷,這里也舉例說(shuō)明:若待映射文件大小為5000 bytes,我們?cè)趍map時(shí)指定內(nèi)存映射區(qū)size = 15000 > 5000,頁(yè)承載大小16384,而內(nèi)核真正的共享區(qū)承載體大小只有8192(能包容映射文件大小即可),此時(shí)在[0,8191]內(nèi)訪問(wèn)均沒(méi)問(wèn)題,但在[8192, 16383]之間會(huì)得到SIGBUS信號(hào);超出16384訪問(wèn)時(shí)會(huì)觸發(fā)SIGSEGV信號(hào)。
?
to be continue…
感謝閱讀本文,歡迎訪問(wèn) 微言 獲取更多內(nèi)容或 查看原文
轉(zhuǎn)載于:https://my.oschina.net/falcon10086/blog/712804
總結(jié)
以上是生活随笔為你收集整理的php进程SIGBUS,SIGSEGV错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序员的3年之痒改变的不止薪水(转载)
- 下一篇: POJ 2337 欧拉回路