博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一次大量TIME_WAIT和Recv-Q 堵塞问题排查思路
阅读量:6238 次
发布时间:2019-06-22

本文共 2678 字,大约阅读时间需要 8 分钟。

记录一下周末出现问题~     仅自己摘记不做任何参考。

第一天故障:

现象:

公司销售群和售后群炸了,说老后台(1.0版本)崩溃了,因为还有部门的业务没来得及迁移到新后台,我当时正在打农药哈哈~

后台504打不开,偶尔能刷出来也是很慢。。大概过了10分钟新后台也挂了,也就是公司所有业务全瘫痪了。。。问题严重了。。。

排查及原因:

先登陆到我们比较重视的新后台查看,有慢日志看慢日志没有慢日志先加慢日志。

简单查看了一下top  发现load较高,有时候能到20左右,忽高忽低不是很稳定,其他都还算正常。。

接着netstat大法查看下连接数情况,统计了一下大概8000多time_wait,平常肯定没这么多的量。

次数省略几千行...

strace -p  http的pidstrace -p  php的pid#通过strace工具追踪了一下web服务和php的进程id,查看他正在做什么?

 

通过跟踪发现有很多调用一个数据库的函数在堆积,找到相应文件下发现原来这里有一个数据库已经下线了,在切换数据库的时候没有更改这个地方,白天切换的时候没发现问题,到了晚上高峰期大量的调用在排队,(今天早上来了问了一下研发,这个调用超时时间是5秒) 导致了大量的TIME_WAIT等待。。堵死。。

处理:

将数据库更改为正常的IP解决了~

 

第二天老后台问题:

 晚上9点左右同样的情况。直接查看连接数情况,果然又堵车了。

 

又堵塞了,大量的连接数不释放,目前业务已经崩了大量的投诉,先快速释放连接数恢复业务。

[root@vm-10 ]# cat /etc/sysctl.conf kernel.sysrq = 1kernel.core_uses_pid = 1kernel.msgmnb = 65536kernel.msgmax = 65536kernel.shmmax = 68719476736kernel.shmall = 4294967296net.ipv4.ip_forward = 0net.ipv4.conf.default.accept_source_route = 0net.ipv4.tcp_syncookies = 1net.ipv4.conf.default.rp_filter = 2net.ipv4.conf.all.rp_filter = 2net.ipv4.conf.all.arp_announce = 2net.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, ...}) = 0stat("/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, ...}) = 0lstat("/aaa/www", {st_mode=S_IFDIR|0755, st_size=38, ...}) = 0lstat("/aaa/www/html", {st_mode=S_IFDIR|0755, st_size=107, ...}) = 0lstat("/aaa/www/html/hangye.aaa.com", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0lstat("/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) = 0rt_sigaction(SIGPROF, {0x7f5710190cc0, [PROF], SA_RESTORER|SA_RESTART, 0x7f5719175660}, {0x7f5710190cc0, [PROF], SA_RESTORER|SA_RESTART, 0x7f5719175660}, 8) = 0rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0getcwd("/", 4095)                       = 2chdir("/aaa/www/html/hangye.aaa.com/bbb_OPEN_VIDEO") = 0setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={30, 0}}, NULL) = 0gettimeofday({1502634914, 509085}, NULL) = 0open("/aaa/www/html/hangye.aaa.com/bbb_OPEN_VIDEO/index.php", O_RDONLY) = 31

  

更改/aaa/www/html/hangye.aaa.com/bbb_OPEN_VIDEO/index.php 文件中的数据库,问题解决。

 

转载于:https://www.cnblogs.com/liuquan/p/7358203.html

你可能感兴趣的文章
Yii用ajax实现无刷新检索更新CListView数据
查看>>
JDBC的事务
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
Apache Pulsar中的地域复制,第1篇:概念和功能
查看>>
python pip install 出现 OSError: [Errno 1] Operation not permitted
查看>>
从源码分析scrollTo、scrollBy、Scroller方法的区别和作用
查看>>
ObjectOutputStream和ObjectInputStream
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
马士兵教学语录
查看>>
计算机网络与Internet应用
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
linux性能剖析工具
查看>>
flutter中的异步
查看>>
计算机高手也不能编出俄罗斯方块——计算机达人成长之路(16)
查看>>
error LNK2001: 无法解析的外部符号 __CrtDbgReport
查看>>
【多线程】的简单理解&进程 and【你的电脑是几核的?】
查看>>
# 2017-2018-1 20155224 《信息安全系统设计基础》第七周学习总结
查看>>
scikit-learn预处理实例之一:使用FunctionTransformer选择列
查看>>