1,登陆服务器查看资源使用top,vmstat等命令查看了一番发现服务器各项指标都没有异常。于是将问题转向了网络层。
2,本地使用ping服务器外网ip正常返回,无丢包,延迟也正常。
3,登录服务器查看tcp相关数据。
发现在卡顿时有大量tcp syn包被丢弃,数值一直在增长。
在查阅资料并结合实际情况后,发现该服务器同时启用了 tcp_timestamps和tcp_tw_recycle参数。
后想起,之前同事为改善time_wait连接数过多问题曾改过该内核参数。
解决办法是,关闭tcp_tw_recycle:
再观察,发现服务已正常,偶尔连接不上的现象消失。
我们先来man一下这两个参数(man tcp):
cp_timestamp 是 RFC1323 定义的优化选项,主要用于 TCP 连接中 RTT(Round Trip Time) 的计算,开启 tcp_timestamp 有利于系统计算更加准确的 RTT,也就有利于 TCP 性能的提升。(默认开启)
关于tcp_timestamps详情请见: >dmidecode这款软件允许你在 Linux
系统下获取有关硬件方面的信息。dmidecode 遵循 SMBIOS/DMI 标准,其输出的信息包括
BIOS、系统、主板、处理器、内存、缓存等等。
Dmidecode 在主流的 Linux 发行版中都可以找到,只需通过所用发行版的包管理器安装即可,例如:
apt-get install dmidecode
dmidecode 的t参数可以按指定类型输出相关信息,假如要获得系统方面的信息(期中包含服务器的生产厂家),则可以执行:
dmidecode -t system
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)