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。

[[email protected]_server_01 ~]#  cat /proc/sys/kernel/printk_ratelimit
5
[[email protected]_server_01 ~]#  cat /proc/sys/kernel/printk_ratelimit_burst
10
[[email protected]_server_01 ~]#

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

[[email protected]_server_01 ~]# cat /proc/sys/net/core/message_cost
5
[[email protected]_server_01 ~]# cat /proc/sys/net/core/message_burst
10
[[email protected]_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

时间: 2024-10-18 01:33:27

linux系统日志__ratelimit: N callbacks suppressed的相关文章

10.32/10.33 rsync通过服务同步10.34 linux系统日志10.35 screen工具

- 10.32/10.33 rsync通过服务同步 - 10.34 linux系统日志 - 10.35 screen工具 - 扩展 1. Linux日志文件总管logrotate http://linux.cn/article-4126-1.html 2. xargs用法详解 http://blog.csdn.net/zhangfn2011/article/details/6776925 # 10.32 rsync通过服务来同步 上 - rsync通过服务的方式同步 - 要编辑配置文件/etc/

嵌入式 Linux进程间通信(四)——Linux系统日志

嵌入式 Linux进程间通信(四)--Linux系统日志 syslog 是一种工业标准的协议,用来记录设备的日志.Linux日志系统由系统日志监控程序syslogd和内核日志监控程序klogd组成,两个监控程序都是守护程序(daemon),且都注册成了系统服务.syslogd专门记录非内核的其他设备所产生的日志,当系统的控制权由系统交给init的时候,日志信息的记录由syslogd负责记录.Klogd主要负责内核所产生的日志.内核日志记录信息由dmesg /var/log/dmesg查看. 常见

Linux系统日志的一些讲解

Linux系统日志 1.cat /etc/logrotate.conf文件里的内容(转储==归档) # see "man logrotate" for details # rotate log files weekly weekly    //表示每周切割一次 # keep 4 weeks worth of backlogs rotate 4  //切割之后,我们最多只保留4个文件(在/var/log/下) # create new (empty) log files after ro

Linux系统日志及日志分析

Linux系统日志及日志分析 Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息. 大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd,默认配置文件为 /etc/syslog.conf,任何希望生成日志的程序都可以向 syslog 发送信息. Linux系统内核和许多程序会产生各种错误信息.警告信息和其他的提示信息,这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写

rsync通过服务同步、linux系统日志、screen工具

rsync通过服务同步 /etc/rsyncd.conf是rsync的默认配置文件,该配置文件不存在,需要编辑内容 主服务器上的操作: 1.[[email protected] rsync]# cat /etc/rsyncd.conf #启动的端口 port=873 #log文件 log file=/var/log/rsync.log pid file=/var/run/rsyncd.pid #必须写服务端的IP address=192.168.3.83 [test] #模块存的地方 path=

八周三次课(1月31日) 10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具

八周三次课(1月31日)10.32 rsync通过服务同步10.33 rsync通过服务同步10.34 linux系统日志10.35 screen工具===============================================================================================================================================================================

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 scre

八周三次课 10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步 编辑: rsync.conf 配置文件:/etc/rsync.conf 启动rsync服务 10.34 linux系统日志 10.35 screen工具 原文地址:http://blog.51cto.com/wbyyy/2067957

rsync通过服务的方式同步、linux系统日志、screen工具

rsync通过服务的方式同步 如果不想输入密码的方式如下: linux系统日志 screen工具 原文地址:http://blog.51cto.com/13515599/2071880

十(7)rsync:介绍、常用选项、通过ssh同步、通过服务同步、linux系统日志、screen

                        rsync工具介绍 rsync:数据备份工具(remote sync). rsync不仅可以远程同步数据(类似scp),而且可以本地同步数据(类似cp),但是不同于cp或scp的一点是,如果数据存在的话它不会覆盖以前的数据,而是会先判断已存在的数据是否和新的数据有差异,只有数据不同时才会把不同的部分覆盖.  (系统如果没有rsync命令,安装:yum install -y rsync) (如:有两台机器A.B,要把A的数据每小时都备份到B下,而且A