LINUX Apache/MySQL伺服器故障排除攻略
LINUX Apache/MySQL伺服器故障排除攻略
00.查看CPU 和 磁碟I/O狀況
01.找到CPU使用率比較高的一些程式軟體 top -H -p pid 02.檢查磁碟I/0 df -hl iostat -d -k -x iotop #抓到tid 要換回 pid pidreadlink -f /proc/*/task/tid/../.. cat /proc/pid(XXXX)/io lsof -p pid(XXXX)
01.外部無法連結時,確定本地端是否可正常連線
http://127.0.0.1 http://localhost http://Domain Name
02.只有外部連線異常
◆確定防火牆有開啟
-查看防火牆狀態
systemctl status firewalld
-開啟防火牆並設置開機自啟
systemctl start firewalld systemctl enable firewalld
一般需要重啟一下機器,不然後面做的設置可能不會生效
-開放或限制埠
1、開放埠-使用的22埠
firewall-cmd –zone=public –add-port=22/tcp –permanent
2、重新載入一下防火牆設置,使設置生效
firewall-cmd –reload
3、可通過如下命令查看是否生效
firewall-cmd –zone=public –query-port=22/tcp
4、如下命令可查看當前系統打開的所有埠
firewall-cmd –zone=public –list-ports
5、關掉剛剛打開的22埠
firewall-cmd –zone=public –remove-port=22/tcp –permanent
6、重新載入一下防火牆設置,使設置生效
firewall-cmd –reload
7、批量開放或限制埠
firewall-cmd –zone=public –add-port=100-500/tcp –permanent
8、重新載入一下防火牆設置,使設置生效
firewall-cmd –reload
9、查看當前系統打開的所有埠
firewall-cmd –zone=public –list-ports
-開放或限制IP
1、限制IP位址訪問-限制IP為192.168.0.200的位址禁止訪問80埠即禁止訪問機器
firewall-cmd –permanent –add-rich-rule=”rule family=”ipv4″ source address=”192.168.0.200″ port protocol=”tcp” port=”80″ reject”
2、重新載入一下防火牆設置,使設置生效
firewall-cmd –reload
3、查看已經設置的規則
firewall-cmd –zone=public –list-rich-rules
4、解除IP地址限制
firewall-cmd –permanent –add-rich-rule=”rule family=”ipv4″ source address=”192.168.0.200″ port protocol=”tcp” port=”80″ accept”
5、重新載入一下防火牆設置,使設置生效
firewall-cmd –reload
6、限制IP位址段-如我們需要限制10.0.0.0-10.0.0.255這一整個段的IP,禁止他們訪問
firewall-cmd –permanent –add-rich-rule=”rule family=”ipv4″ source address=”10.0.0.0/24″ port protocol=”tcp” port=”80″ reject”
7.重新載入一下防火牆設置,使設置生效
firewall-cmd –reload
8.查看已經設置的規則
firewall-cmd –zone=public –list-rich-rules
◆查詢連線數量(connections & sessions)
看全部: netstat -aunt | wc -l 只看 TCP: netstat -ant | wc -l 只看 UDP: netstat -aut | wa -l
显示网络统计信息
netstat -s
显示当前UDP连接状况
netstat -nu
显示UDP端口号的使用情况
netstat -apu
统计机器中网络连接各个状态个数
netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
显示TCP连接
ss -t -a
显示sockets摘要信息
ss -s
显示所有udp sockets
ss -u -a
tcp,etcp状态
sar -n TCP,ETCP 1
查看网络IO
sar -n DEV 1
抓包以包为单位进行输出
tcpdump -i eth1 host 192.168.1.1 and port 80
抓包以流为单位显示数据内容
tcpflow -cp host 192.168.1.1
◆查看Apache当前并发访问数
netstat -an | grep ESTABLISHED | wc -l #77
◆查看httpd进程数
ps aux|grep httpd|wc -l #21
◆查看Apache的并发请求数及其TCP连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}' #SYN_RECV 3 #TIME_WAIT 76 #ESTABLISHED 84 #SYN_SENT 2 #FIN_WAIT1 2
◆每个ip的连接数,以及总的各个状态的连接数
netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %s\n", a, S[a]);++I}printf("%-20s %s\n","TOTAL_IP",I);for(a in s) printf("%-20s %s\n",a, s[a]);printf("%-20s %s\n","TOTAL_LINK",N);}'
◆MySQL连接访问列表方法小结
SHOW PROCESSLIST; #4 rows SELECT * FROM `information_schema`.`PROCESSLIST`; #2 rows
03.本地端也無法連結時
◆檢查配置檔案的錯誤
-使用apachectl configtest命令
◆學會使用錯誤日誌
1 錯誤日誌格式
Apache 預設的錯誤日誌配置如下:
ErrorLog logs/error_log LogLevel warn
配置錯誤日誌相對簡單,只要說明日誌檔案的存放路徑和日誌記錄等級即可。格式為:
日期和時間 錯誤等級 錯誤訊息
2 日誌記錄等級
下面著重說說日誌記錄等級,包括八個級別。
1 級英文名稱emerg ,出現緊急情況使得該系統不可用,如系統宕機等
2 級alert 英文名稱,需要立即引起注意的情況
3 級 英文名稱crit ,危險情況的警告
4級 英文名稱error ,除了emerg 、alert、crit 的其他錯誤
5級英文名稱 warn。 警告資訊
6級英文名稱 notice ,需要引起注意的情況,但不如error、warn 重要
7級英文名稱 info ,值得報告的一般訊息
8級英文名稱 debug, 由運行於debug 模式的程式所產生的訊息
3 錯誤日誌檔案舉例
錯誤日誌的格式相對靈活,並可以附加文字描述。某些資訊會出現在絕大多數記錄中,一個典型的例子是:
[Wed Oct 11 14:32:52 2007] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
其中,第一項是錯誤發生的日期和時間;第二項是錯誤的嚴重性,LogLevel指令使只有高於指定嚴重性級別的錯誤才會被記錄;第三項是導致錯誤的IP地址;此後是資訊本身,在此例中,伺服器拒絕了這個客戶的訪問。伺服器在記錄被訪問檔案時,用的是檔案系統路徑,而不是Web路徑。錯誤日誌中會包含類似上述例子的多種型別的資訊。此外,CGI指令碼中任何輸出到stderr的資訊會作為除錯資訊原封不動地記錄到錯誤日誌中。使用者可以增加或刪除錯誤日誌的項。但是對某些特殊請求,在訪問日誌(access log)中也會有相應的記錄,比如上述例子在訪問日誌中也會有相應的記錄,其狀態碼是403,因為訪問日誌也可以定製,所以可以從訪問日誌中得到錯誤事件的更多資訊。
◆檢查Apache伺服器模組問題
如果Apache伺服器可以啟動,但是某些功能無法實現,比如前面介紹的Webdav 功能,通常是提供這個功能的模組沒有載入,此時可以使用命令:“httpd -M”檢視模組載入情況。
它會輸出一個已經啟用的模組列表,包括靜態編譯在伺服器中的模組和作為DSO動態載入的模組。也可以使用瀏覽器訪問http://192.168.1.12/server-info/?list
One thought on “LINUX Apache/MySQL伺服器故障排除攻略”
LINUX APACHE伺服器(網站)故障排除攻略 SOP 步驟