CentOS Dropped解决办法
导读:CentOS "Dropped"问题解决方法(网络丢包/连接中断场景) 一、优先排查基础网络连接 检查物理连接与设备状态 确保网线插紧(或无线网卡连接正常),观察路由器/交换机的对应接口指示灯是否亮起(绿色常亮为正常)。若有松动或损坏,重...
CentOS "Dropped"问题解决方法(网络丢包/连接中断场景)
一、优先排查基础网络连接
- 检查物理连接与设备状态
确保网线插紧(或无线网卡连接正常),观察路由器/交换机的对应接口指示灯是否亮起(绿色常亮为正常)。若有松动或损坏,重新插拔或更换线缆/设备。 - 验证网络接口状态
使用ip link show命令查看接口是否处于UP状态(如state UP)。若接口为DOWN,用sudo ip link set < 接口名> up(如ens33)激活接口。 - 确认IP与路由配置
- 用
ip addr show检查接口是否有有效IP地址(inet行,如192.168.1.100/24)。 - 用
ip route show确认默认网关是否存在(如default via 192.168.1.1 dev ens33)。
若配置错误,编辑/etc/sysconfig/network-scripts/ifcfg-< 接口名>(如ifcfg-ens33),确保以下参数正确:
保存后重启网络服务:BOOTPROTO=dhcp # 或static(静态IP需配置IPADDR、NETMASK、GATEWAY) ONBOOT=yes # 开机自启 NAME=ens33 # 接口名(与ip link一致) DEVICE=ens33sudo systemctl restart NetworkManager。 - 用
二、深入排查网络丢包原因
- 查看网络统计信息
使用netstat -s或ip -s link show < 接口名>查看丢包统计(如dropped计数)。重点关注:RX dropped(接收丢包):可能因网卡缓冲区满、驱动问题或物理层故障。TX dropped(发送丢包):可能因网络拥塞、防火墙拦截或路由问题。
- 检查网卡驱动与参数
用ethtool < 接口名>(如ethtool ens33)查看网卡状态:- 确认
Speed(速度,如1000Mb/s)和Duplex(双工,如Full)是否与交换机匹配。 - 若参数异常,用
sudo ethtool -s < 接口名> speed 1000 duplex full调整(需交换机支持)。 - 检查
RX/TX errors(接收/发送错误计数),若数值持续增长,可能需更换网卡驱动或硬件。
- 确认
- 监控系统资源使用
用top、htop或vmstat 1查看CPU、内存、磁盘I/O使用率。若资源占用过高(如CPU> 80%、内存剩余< 10%),可能导致网络处理能力下降,需优化应用或升级硬件。
三、调整内核与系统配置
- 增大连接跟踪表(针对连接跟踪满问题)
若日志中出现ip_conntrack: table full错误,需扩大连接跟踪表大小:
编辑/etc/sysctl.conf,添加:运行net.ipv4.netfilter.ip_conntrack_max = 100000 # 最大连接数 net.ipv4.netfilter.ip_conntrack_hashsize = 100000 # 哈希表大小sudo sysctl -p使配置生效。 - 优化TCP缓冲区(针对高吞吐丢包)
编辑/etc/sysctl.conf,调整TCP缓冲区参数:运行net.core.rmem_max = 16777216 # 接收缓冲区最大值 net.core.wmem_max = 16777216 # 发送缓冲区最大值 net.ipv4.tcp_rmem = 4096 87380 16777216 # 接收缓冲区分段(min/default/max) net.ipv4.tcp_wmem = 4096 65536 16777216 # 发送缓冲区分段 net.ipv4.tcp_mem = 786432 1048576 26777216 # TCP内存阈值 net.ipv4.tcp_fin_timeout = 30 # FIN等待超时(秒) net.ipv4.tcp_keepalive_time = 120 # 保活时间(秒)sudo sysctl -p生效。 - 调整文件描述符限制(针对大量连接场景)
编辑/etc/security/limits.conf,添加:重新登录用户使配置生效。* soft nofile 65536 # 单个用户最大文件描述符(软限制) * hard nofile 65536 # 单个用户最大文件描述符(硬限制)
四、检查安全策略与防火墙
- 验证防火墙规则
- 若使用
firewalld,用firewall-cmd --list-all查看规则,确保允许必要端口(如80/tcp、443/tcp):sudo firewall-cmd --add-port=80/tcp --permanent sudo firewall-cmd --reload - 若使用
iptables,用sudo iptables -L -n查看规则,避免误拦截。临时关闭防火墙测试(生产环境慎用):若关闭后问题消失,需调整防火墙规则。sudo systemctl stop firewalld # 或 sudo service iptables stop
- 若使用
- 检查SELinux配置
若SELinux处于Enforcing模式,可能阻止网络服务。编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive(临时生效),或用setenforce 0(立即生效)。测试后若问题解决,需调整SELinux策略或保持permissive模式。
五、查看系统日志定位具体原因
使用journalctl -xe(实时日志)或grep -i error /var/log/messages(历史错误日志)查看与网络相关的错误信息(如network service failed、eth0: link down)。根据日志提示进一步排查,例如:
- 若日志显示
device eth0 does not seem to be present,可能网卡驱动未加载,需用lspci | grep -i ethernet查看网卡型号,安装对应驱动。
六、其他常见问题解决
- 网络服务未启动
用systemctl status network(CentOS 7)或systemctl status NetworkManager(CentOS 8+)检查网络服务状态。若未运行,用sudo systemctl start < 服务名>启动,并设置开机自启:sudo systemctl enable < 服务名>。 - 虚拟机网络设置问题
若使用VMware/VirtualBox,检查虚拟网络适配器模式:- 推荐NAT模式(虚拟机共享主机IP,适合测试)。
- 若需桥接,确保主机网络正常,且虚拟机IP与主机在同一子网。
关闭虚拟机,编辑网络适配器设置调整模式。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Dropped解决办法
本文地址: https://pptw.com/jishu/746093.html
