第一天故障:
現象:
公司銷售羣和售後羣炸了,說老後臺(1.0版本)崩潰了,因爲還有部門的業務沒來得及遷移到新後臺,我當時正在打農藥哈哈~
後臺504打不開,偶爾能刷出來也是很慢。。大概過了10分鐘新後臺也掛了,也就是公司所有業務全癱瘓了。。。問題嚴重了。。。
排查及原因:
先登陸到我們比較重視的新後臺查看,有慢日誌看慢日誌沒有慢日誌先加慢日誌。
簡單查看了一下top 發現load較高,有時候能到20左右,忽高忽低不是很穩定,其他都還算正常。。
接着netstat大法查看下連接數情況,統計了一下大概8000多time_wait,平常肯定沒這麼多的量。
次數省略幾千行...
-
strace -p http的pid
-
strace -p php的pid
-
#通過strace工具追蹤了一下web服務和php的進程id,查看他正在做什麼?
通過跟蹤發現有很多調用一個數據庫的函數在堆積,找到相應文件下發現原來這裏有一個數據庫已經下線了,在切換數據庫的時候沒有更改這個地方,白天切換的時候沒發現問題,到了晚上高峯期大量的調用在排隊,(今天早上來了問了一下研發,這個調用超時時間是5秒) 導致了大量的TIME_WAIT等待。。堵死。。
處理:
將數據庫更改爲正常的IP解決了~
第二天老後臺問題:
晚上9點左右同樣的情況。直接查看連接數情況,果然又堵車了。
又堵塞了,大量的連接數不釋放,目前業務已經崩了大量的投訴,先快速釋放連接數恢復業務。
-
[root@vm-10 ]# cat /etc/sysctl.conf
-
kernel.sysrq = 1
-
kernel.core_uses_pid = 1
-
kernel.msgmnb = 65536
-
kernel.msgmax = 65536
-
kernel.shmmax = 68719476736
-
kernel.shmall = 4294967296
-
net.ipv4.ip_forward = 0
-
net.ipv4.conf.default.accept_source_route = 0
-
net.ipv4.tcp_syncookies = 1
-
net.ipv4.conf.default.rp_filter = 2
-
net.ipv4.conf.all.rp_filter = 2
-
net.ipv4.conf.all.arp_announce = 2
-
net.ipv4.tcp_tw_reuse = 1 #新增
-
net.ipv4.tcp_tw_recycle = 1 #新增
-
net.ipv4.tcp_fin_timeout = 30 #新增
-
[root@vm-10 ]#
net.ipv4.tcp_syncookies = 1 表示開啓SYN Cookies。當出現SYN等待隊列溢出時,啓用cookies來處理,可防範少量SYN攻擊,默認爲0,表示關閉;
net.ipv4.tcp_tw_reuse = 1 表示開啓重用。允許將TIME-WAIT sockets重新用於新的TCP連接,默認爲0,表示關閉;
net.ipv4.tcp_tw_recycle = 1 表示開啓TCP連接中TIME-WAIT sockets的快速回收,默認爲0,表示關閉。
果然調整完後連接數快速降下來了,然後strace查了一下系統調用,發現還有一個數據庫沒更改
-
lstat("/aaa/www/html/hangye.aaa.com/bbb_OPEN_VIDEO/index.php", {st_mode=S_IFREG|0644, st_size=14994, ...}) = 0
-
stat("/aaa/www/html/hangye.aaa.com/s", 0x7ffd5f5e22b0) = -1 ENOENT (No such file or directory)
-
lstat("/aaa", {st_mode=S_IFDIR|0755, st_size=103, ...}) = 0
-
lstat("/aaa/www", {st_mode=S_IFDIR|0755, st_size=38, ...}) = 0
-
lstat("/aaa/www/html", {st_mode=S_IFDIR|0755, st_size=107, ...}) = 0
-
lstat("/aaa/www/html/hangye.aaa.com", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
-
lstat("/aaa/www/html/hangye.aaa.com/s", 0x7ffd5f5e22b0) = -1 ENOENT (No such file or directory)
-
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={60, 0}}, NULL) = 0
-
rt_sigaction(SIGPROF, {0x7f5710190cc0, [PROF], SA_RESTORER|SA_RESTART, 0x7f5719175660}, {0x7f5710190cc0, [PROF], SA_RESTORER|SA_RESTART, 0x7f5719175660}, 8) = 0
-
rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0
-
getcwd("/", 4095) = 2
-
chdir("/aaa/www/html/hangye.aaa.com/bbb_OPEN_VIDEO") = 0
-
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={30, 0}}, NULL) = 0
-
gettimeofday({1502634914, 509085}, NULL) = 0
-
open("/aaa/www/html/hangye.aaa.com/bbb_OPEN_VIDEO/index.php", O_RDONLY) = 31