开发者社区 问答 正文

如何解决Linux系统 ping: sendmsg: Operation not permitted 问题



问题现象


访问网站慢。执行ping结果如下图:

ping  127.0.0.1;ping: sendmsg: Operation not permitted
系统负核 1 以下,网络线路通畅,资料库无死锁进程;
系统日志出现大量:kernel: printk: xxxx messages suppressed.资讯。
dmesg 指令后发现大量以下资讯:
TCP: drop open request from 202.153.162.100/62751
printk: 78 messages suppressed.
问题原因
问题可能出在TCP/IP连结上,根据日志资讯查找资料介绍如下:
IP_conntrack表示连接跟踪数据库(conntrack database),代表NAT机器跟踪连接的数目,连接跟踪表能容纳多少记录是被一个变量控制的,它可由内核中的ip-sysctl函数设置。每一个跟踪连接表会占用350字节的内核存储空间,时间一长就会把默认的空间填满。
解决方案
1. 加大 ip_conntrack_max 值:
查出原本的 ip_conntrack_max 值,指令: cat /proc/sys/net/ipv4/ip_conntrack_max
写入理想的数值 (每一个 ip_conntrack buffer 会占用 292 Bytes)
指令: echo "数值" > /proc/sys/net/ipv4/ip_conntrack_max
例如: echo "163840" >/proc/sys/net/ipv4/ip_conntrack_max
这个效果是暂时的, 如果要每次开机都使用新的数值, 需将上述指令写入 /etc/rc.d/rc.local
或是在 /etc/sysctl.conf 加入: net.ipv4.ip_conntrack_max = 数值
或使用指令: sysctl -w net.ipv4.ip_conntrack_max=数值
2. 降低 ip_conntrack timeout 时间
重设:ip_conntrack_tcp_timeout_established (原值: 432000, 单位: 秒)
指令:echo "数值" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
例如:echo "180" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
3. 开启 tcp_syncookies
重设:tcp_syncookies (默认值 0)
例如:echo '1'> /proc/sys/net/ipv4/tcp_syncookies
4、经过以上设置后,系统日志出现一条:
kernel: possible SYN flooding on port 80. Sending cookies.
后不再出现:kernel: printk: xxx messages suppressed. 的提示。访问网站明显感觉速度提升。
  
如果问题还未能解决,请联系 售后技术支持

展开
收起
boxti 2017-10-23 15:27:04 2700 分享 版权
阿里云 AI 助理回答

根据您描述的问题现象、分析过程以及采取的解决方案,可以看出您已经非常专业地处理了一个与TCP/IP连接跟踪、网络性能和系统日志相关的问题。您的解决步骤是合理的,特别是针对IP_conntrack表满导致的性能瓶颈,通过增加ip_conntrack_max值、调整超时时间以及开启tcp_syncookies来缓解SYN洪水攻击的可能性,这些都是有效提升网络服务性能的方法。

如果在阿里云ECS(Elastic Compute Service)实例上遇到类似问题,除了您手动进行的这些系统级别调优之外,还可以考虑以下几点建议或服务来进一步优化和监控:

  1. 云服务器安全组配置:检查ECS实例的安全组规则,确保没有过度限制入站和出站流量的规则,尤其是对80端口(HTTP)和443端口(HTTPS)的访问规则。

  2. DDoS防护:如果怀疑存在DDoS攻击,可以启用阿里云提供的DDoS防护服务,如基础DDoS防护或更高级的Web应用防火墙(WAF),以减轻潜在的攻击影响。

  3. 云监控与日志服务:利用阿里云的云监控服务监控ECS实例的网络流量、CPU使用率等关键指标,结合日志服务(SLS)收集并分析系统日志,以便及时发现并预警潜在问题。

  4. 弹性伸缩服务:对于高流量网站,考虑使用阿里云的弹性伸缩(Auto Scaling)服务,根据实际流量自动增加或减少ECS实例数量,保证服务的稳定性和响应速度。

  5. 负载均衡SLB:如果尚未使用,考虑部署负载均衡SLB,它可以将访问流量分发到多台ECS实例上,提高网站的可用性和响应速度,同时也能分散单点故障风险。

  6. 云数据库RDS优化:如果网站后端涉及数据库操作,检查并优化RDS实例的性能,比如索引优化、查询优化等,确保数据库访问不是瓶颈。

如果经过上述尝试和优化后问题仍然存在,确实应该联系阿里云的技术支持团队,他们能提供更深入的诊断和专业的解决方案。记得在联系时提供尽可能详细的问题描述和已尝试的解决措施,这将有助于快速定位问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答