linux系统日志__ratelimit: N callbacks suppressed-阿里云开发者社区

开发者社区> 科技探索者> 正文

linux系统日志__ratelimit: N callbacks suppressed

简介:
+关注继续查看

报错

今天线上遇到故障,php进行因为段错误退出了,系统日志中的kernel报错如下:

Feb 25 22:25:11 web_server_01 kernel: __ratelimit: 250 callbacks suppressed
Feb 25 22:25:11 web_server_01 kernel: php-fpm[25942]: segfault at 2c6 ip 00000000000002c6 sp 00007fffdcf9e798 error 14 in php-fpm[400000+a3b000]

查询

对于__ratelimit: 250 callbacks suppressed的报错的原因不是很理解,遂做了一番查询,记录一下:

__ratelimit: N callbacks suppressed表示内核阻止了N条syslog消息,这是因为系统重复的日志过多(频率过高),太快输出,被内核中的net_ratelimit()限制了syslog消息。

源码参考:http://fxr.watson.org/fxr/source/lib/ratelimit.c?v=linux-2.6

这个rate limit也是Linux为了避免DoS攻击的一种机制,避免每个消息都被记录(会导致存储空间撑爆)。当内核记录消息,使用printk()通过这种机制来检查是否输出日志。
这个限制可以通过/proc/sys/kernel/printk_ratelimit和/proc/sys/kernel/printk_ratelimit_burst来调优。默认配置(RHEL6)分别是5和10。也就是说,内核允许每5秒记录10条消息。超过这个限制,内核就会抛弃日志,并记录ratelimit N: callbacks suppressed。

[root@web_server_01 ~]#  cat /proc/sys/kernel/printk_ratelimit
5
[root@web_server_01 ~]#  cat /proc/sys/kernel/printk_ratelimit_burst
10
[root@web_server_01 ~]#

然而,在内核的网络代码中有自己的限制配置(逻辑相同,但是是独立的配置) /proc/sys/net/core/message_cost和/proc/sys/net/core/message_burst,默认配置也是5和10。这里message_cost也是日志采样时间。

[root@web_server_01 ~]# cat /proc/sys/net/core/message_cost
5
[root@web_server_01 ~]# cat /proc/sys/net/core/message_burst
10
[root@web_server_01 ~]#

如果要关闭ratelimit机制,也就是允许每个消息都记录下来,则可以设置message_cost值为0

sysctl -w net.core.message_cost=0

不过,一旦关闭ratelimit,系统就可能存在被日志攻击的风险。

参考链接:https://huataihuang.gitbooks.io/cloud-atlas/content/os/linux/kernel/log/ratelimit.html

标签: ratelimit, 内核, kernel, 报错, __ratelimit, suppressed

本文转自奔跑在路上博客51CTO博客,原文链接http://blog.51cto.com/qiangsh/2050974如需转载请自行联系原作者


qianghong000

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
关于《RedHat Linux用户基础》和《RedHat Enterprise Linux系统管理》
这两本书的课后习题书本并没有提供答案,好在红帽官方提供了答案的PDF文件,如果需要的可以去官方下载,地址是http://www.redhat.com.cn/training/academy/,在最下面的红帽学院官方指定教材的下面的两个链接就是。
1244 0
系统日志文件
常见日志文件 /var/log/boot.log 开机启动的时候系统内核会去检测与启动硬件,接下来开始启动各种内核支持得功能等。这些流程都会记录在/var/log/boot.log 里面。不过这个文件只会存储本次开机启动的信息,之前的启动信息并不会保留下来 /var/log/cron c.
1279 0
GPS定位系统怎么定位监控,如何快速二次开发行业应用
GPS定位系统是一套可以监控管理智能定位终端的综合管理系统;一般都具有实时定位,轨迹回放,电子围栏,统计报表,报警提醒,指令控制等功能!那么这套系统是如何实现实时定位监控的呢,首先需要一个智能GPS北斗定位终端,终端将实时接收卫星信号并计算出相应的 经纬度数据速度时间方向等数据,更高级的终端会带有...
1425 0
Android实现系统下拉栏的消息提示——Notification
Android实现系统下拉栏的消息提示——Notification 系统默认样式 默认通知(通用) 效果图 按钮 实现 /** * 系统下拉栏默认的通...
868 0
5489
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载