Aug 18 13:52:37 ad2 kernel: httpd[6430]: segfault at 000000004d88ad80 rip 00002b1e0fad870a rsp 000000004d88ad60 error 6
Aug 18 13:52:38 ad2 kernel: httpd[6535]: segfault at 00000000400e4d80 rip 00002b1e0fad870a rsp 00000000400e4d60 error 6
Aug 18 13:52:39 ad2 kernel: httpd[6564]: segfault at 0000000049c84d80 rip 00002b1e0fad870a rsp 0000000049c84d60 error 6
Aug 18 13:52:40 ad2 kernel: httpd[6765]: segfault at 0000000042478d80 rip 00002b1e0fad870a rsp 0000000042478d60 error 6
Aug 18 13:52:41 ad2 kernel: httpd[6880]: segfault at 0000000042e79d80 rip 00002b1e0fad870a rsp 0000000042e79d60 error 6
Aug 18 13:52:41 ad2 kernel: httpd[6890]: segfault at 0000000047e81d80 rip 00002b1e0fad870a rsp 0000000047e81d60 error 6
Aug 18 13:52:43 ad2 kernel: httpd[7101]: segfault at 0000000042478d80 rip 00002b1e0fad870a rsp 0000000042478d60 error 6
Aug 18 13:52:45 ad2 kernel: httpd[7237]: segfault at 0000000050a8fd80 rip 00002b1e0fad870a rsp 0000000050a8fd60 error 6
Aug 18 13:52:47 ad2 kernel: httpd[7347]: segfault at 0000000049283d80 rip 00002b1e0fad870a rsp 0000000049283d60 error 6
Aug 18 13:52:49 ad2 kernel: httpd[7455]: segfault at 000000004427bd80 rip 00002b1e0fad870a rsp 000000004427bd60 error 6
Aug 18 13:52:51 ad2 kernel: httpd[7602]: segfault at 0000000055a97d80 rip 00002b1e0fad870a rsp 0000000055a97d60 error 6
Aug 18 13:52:53 ad2 kernel: httpd[7717]: segfault at 0000000054695d80 rip 00002b1e0fad870a rsp 0000000054695d60 error 6
Aug 18 13:52:55 ad2 kernel: httpd[7812]: segfault at 000000004387ad80 rip 00002b1e0fad870a rsp 000000004387ad60 error 6
Aug 18 13:52:57 ad2 kernel: httpd[7932]: segfault at 000000004a685d80 rip 00002b1e0fad870a rsp 000000004a685d60 error 6
Aug 18 13:52:59 ad2 kernel: httpd[8072]: segfault at 000000005969dd80 rip 00002b1e0fad870a rsp 000000005969dd60 error 6
Aug 18 13:53:01 ad2 kernel: httpd[8160]: segfault at 000000004387ad80 rip 00002b1e0fad870a rsp 000000004387ad60 error 6
Aug 18 13:53:03 ad2 kernel: httpd[8292]: segfault at 000000004f68dd80 rip 00002b1e0fad870a rsp 000000004f68dd60 error 6
Aug 18 13:53:05 ad2 kernel: httpd[8413]: segfault at 000000004d88ad80 rip 00002b1e0fad870a rsp 000000004d88ad60 error 6
Aug 18 13:53:07 ad2 kernel: httpd[8514]: segfault at 000000004427bd80 rip 00002b1e0fad870a rsp 000000004427bd60 error 6
Aug 18 13:53:09 ad2 kernel: httpd[8645]: segfault at 0000000048882d80 rip 00002b1e0fad870a rsp 0000000048882d60 error 6
Aug 18 13:53:11 ad2 kernel: httpd[8765]: segfault at 0000000049283d80 rip 00002b1e0fad870a rsp 0000000049283d60 error 6前端
今天重啓了下apache 就出現了這個錯誤,我鬱悶了處處搜資料沒有解決方法,對於我這種運維工程師仍是有點難度的,關鍵百度和谷歌沒有解決方法,只有內存訪問過界這個說法:ios
這種信息通常都是由內存訪問越界形成的,無論是用戶態程序仍是內核態程序訪問越界都會出core, 並在系統日誌裏面輸出一條這樣的信息。這條信息的前面分別是訪問越界的程序名,進程ID號,訪問越界的地址以及當時進程堆棧地址等信息,比較有用的信息是 最後的error number.
在上面的例子中,error number是6, 轉成二進制就是110, 即bit2=1, bit1=1, bit0=0, 按照上面的解釋,咱們能夠得出這條信息是因爲用戶態程序讀操做訪問越界形成的。
error number是由三個字位組成的,從高到底分別爲bit2 bit1和bit0,因此它的取值範圍是0~7.
bit2: 值爲1表示是用戶態程序內存訪問越界,值爲0表示是內核態程序內存訪問越界
bit1: 值爲1表示是寫操做致使內存訪問越界,值爲0表示是讀操做致使內存訪問越界
bit0: 值爲1表示沒有足夠的權限訪問非法地址的內容,值爲0表示訪問的非法地址根本沒有對應的頁面,也就是無效地址
根據segfault信息調試定位程序bug:
#include<stdio.h>int main(){ int *p; *p=12; return 1;}
1. gcc testseg.c -o testseg -g,運行./testseg查看dmesg信息以下:
testseg[26063]: segfault at 0000000000000000 rip 0000000000400470 rsp 0000007fbffff8a0 error 6
2. 運行addr2line -e testseg 0000000000400470,輸出以下:
/home/xxx/xxx/c/testseg.c:5 [...]
***********************
內存不足不會引發段錯誤。段錯誤一般出如今訪問了非法的地址後,非法地址分爲3類:
1. 訪問的地址沒有對應的物理內存。這類錯誤主要出如今越界訪問,例如棧越界。好比說當前進程的棧只有5個頁和它對應,共20k大小(x86平臺),你訪問的地址超過了這個範圍,就會發生segmentation fault。
2.對地址的操做與該地址的屬性不符合。例如該地址對應的內存是隻讀的,如文本段,你卻試圖進行寫操做。
3.低權限訪問高權限地址。這類狀況發生在用戶進程試圖訪問內核空間。例如x86中,TASK_SIZE以上的地址爲內核空間,當用戶態進程試圖訪問這些地址時,segmentation fault。********************nginx
這些解釋只能提供一些線索.程序員
個人環境先解釋下 nginx前端反向代理 apache後端 WEB 8000端口apache
這臺服務器跑了3個域名 。訪問的時候nginx沒有問題 是502錯誤 明顯是apache的錯誤,而後我就查內核和apache錯誤日誌 就是上面一堆的東西了。後端
我就嘗試各類方法解決 既然是內存問題 之前好好的忽然就壞了。我就懷疑是否是內存 不足 free 內存沒問題。 是否是溢出呢 不清楚服務器
第一個CPU 中斷有點問題 ,可是確實不是CPU 的問題 內核報錯就是內存的問題,strace,iostat我也檢查的了IO 都沒問題,萬惡的問題來自哪呢?運維
重啓了服務器 ,apache 從新編譯了仍是不行,後來我就無語了,繼續想辦法解決啊ide
0000000049283d80 這是進制轉換過來的 轉回去沒工具,可是想了是應該是程序的問題,抱着僥倖的內心試了下。把這上面的域名所有註釋了,本身新建了個一個虛擬主機寫了個測試頁面 竟然好了。這個怎麼個狀況呢?而後我把3個域名一個個試。加上其中第2個域名就出現了內核報警這個狀況,最後就找程序員 問最近上傳什麼程序了麼,由於這個是新項目,改動的比較多,而後把那個幾個目錄給我 ,我所有移動出來 ,一個個移動回去測試那個目錄裏面的程序致使的,固然查詢這個是有很快的方法的,最後排查鎖定的一個目錄啦,進入目錄 查詢時間 可是沒有找到,而後看到一個s_s_s_ 這個一個文件,打開一看進制文件,我問程序員沒用我就刪除了,而後一切恢復正常了。工具
最後總結這個就是程序致使的狀況最多,建議本身編個虛擬主機試試,若是不是我就不怎麼清楚了,我是費了2小時解決的,一步步排查的,很糾結遇到這個問題,但不要着急 仔細分析辦法總會有的。