004、网络那点事:从一次诡异的丢包说起上周排查线上问题,某嵌入式设备TCP长连接隔三差五就断。tcpdump抓包一看,三次握手成了两次半——客户端SYN出去,服务端SYN-ACK回来了,客户端愣是没回最后的ACK。你说玄不玄?协议栈不是黑盒子很多人把协议栈当操作系统提供的“魔法”,直到被现实打脸。那次丢包的根因在哪?在网卡驱动里。DMA缓冲区设置太小,高负载下直接溢出,内核甚至来不及记录统计信息。这里踩过坑:别迷信默认配置,嵌入式场景下每个缓冲区大小都得拿计算器摁一遍。看这段伪配置,很多人的启动脚本里都有:// 别这样写!这是十年前的内存配置net.core.rmem_default=124928net.core.wmem_default=124928// 试试这个,根据你的MTU和业务流量调整net.core.rmem_max=16777216net.core.wmem_max=16777216net.ipv4.tcp_rmem=