在一个运行在虚拟容器(VMware)上且缺乏本地存储的高流量网站上,我们成功地通过从直接记录到日志文件(位于远程网络存储上)切换到rsyslogd来显著提高吞吐量(每秒请求数)。
基本上,我们从同步日志记录切换到了异步日志记录。Web服务器工作进程使用syslog(3)将数据写入内存缓冲区,而rsyslogd(8)以并行和自己的速度将数据发送到实际文件中,因此进程在记录日志时不会被IO阻塞。
到目前为止一切顺利。问题是,偶尔会出现rsyslogd无法写入的情况(例如短暂/持续的网络中断),导致输入缓冲区迅速填满。
我的问题是:
基本上,我们从同步日志记录切换到了异步日志记录。Web服务器工作进程使用syslog(3)将数据写入内存缓冲区,而rsyslogd(8)以并行和自己的速度将数据发送到实际文件中,因此进程在记录日志时不会被IO阻塞。
到目前为止一切顺利。问题是,偶尔会出现rsyslogd无法写入的情况(例如短暂/持续的网络中断),导致输入缓冲区迅速填满。
我的问题是:
- 客户端在使用syslog(3)向rsyslogd写入时是否会被阻塞?
- 有没有办法查看rsyslogd的统计信息,例如缓冲区的大小/填充情况?
- 有没有办法增加rsyslogd的输入缓冲区大小?