有一次业务反馈有些请求无法正常响应,后来花了两天时间才发现ifconfig看网卡的drop的包不断增长,后来发现是跟开启了内核的timestamp参数有关
在Linux系统中,开启了内核的时间戳(timestamp)参数可能会导致网络包的丢失。这通常与TCP时间戳选项相关,该选项可以在TCP头部中启用时间戳。当启用时间戳选项后,如果接收端的时间戳与发送端的时间戳相差太大,就会导致包被丢弃。
解决这个问题的方法是禁用时间戳选项,可以通过修改系统的sysctl参数来实现。具体步骤如下:
- 打开终端,使用root权限登录或者使用sudo命令获取管理员权限。
执行以下命令来临时禁用TCP时间戳选项:
sudo sysctl -w net.ipv4.tcp_timestamps=0
如果确认禁用时间戳后问题得到解决,可以将该设置永久生效。编辑
/etc/sysctl.conf
文件,在文件末尾添加以下内容:net.ipv4.tcp_timestamps = 0
保存文件并执行以下命令使其生效:
sudo sysctl -p
禁用TCP时间戳选项可能会影响某些特定的网络应用,因此在实际操作中需要谨慎考虑。
有待进一步验证。