您的位置:首页 > 产品设计 > UI/UE

rsyslog queue

2016-07-22 15:03 435 查看
http://www.rsyslog.com/doc/v8-stable/concepts/queues.html

1.所有消息先进主队列,再根据过滤器进响应队列,进去之后主队列消息删除;

2.$MainMsgQueueSaveOnShutdown on;

3.设置队列模型 : $<object>QueueType

4. 直接队列: $<object>QueueType Directory

5. 硬盘队列: 超可靠,但是最慢,不推荐

前缀:$<object>QueueFilename

分块写,每个块写自己的文件,前缀如上,接7个数字,从1开始,默认10mb,可设置大小:$<object>QueueMaxFileSize,但是大小要求不严格,rsyslog总是写完整个队列条目,即使违反大小限制;200G硬盘推荐设置为2G

在队列创建之前,使用$WorkDirectory命令指定不同的硬盘可以提高性能;

创建硬盘队列:$<object>QueueType Disk;

队列检查时间间隔:$<object>QueueCheckpointInterval;

每个写操作同步(性能消耗严重):<object>QueueSyncQueueFiles on/off;

6. 内存队列

保存数据不限时间

LinkedList模式:动态分配,可以存储大量数据:$<object>QueueType LinkedList;

FixedArray模式:固定大小,预先分配,对于数据量小,效率要求高可以使用:$<object>QueueType FixedArray;

7. 硬盘辅助内存队列

创建:如果使用命令$<object>QueueFileName创建一个跟内存队列同名的硬盘队列,则硬盘队列自动变为硬盘辅助队列(disk-assisted DA)

内存队列和硬盘队列是串联方式,如果内存满了或者要关机,则硬盘队列被激活;

推荐数据库action或通过tcp发送的action都使用硬盘辅助队列;

high watermark 命令:$<object>QueueHighWatermark,队列中数据量达到该值时,回写到磁盘;

low watermark 命令:$<object>QueueLowWatermark, 队列中数据量降到该值时,停止回写磁盘;

8. 限制队列大小

$<object>QueueSize : 队列可以接收的最大条目数

$<object>QueueMaxDiskSpace : 硬盘队列最大磁盘大小

9. 工作线程池

$<object>QueueWorkerThreadMinimumMessages : 该值为一个线程最多处理的消息数,大于该值,并且不会超过线程数限制,会创建新工作线程;

$<object>QueueWorkerThreads: 限制最多的线程数

$<object>QueueWorkerTimeoutThreadShutdown : 工作线程超时多长时间退出,单位毫秒,0为立即退出,-1为永不退出;

10. 消息丢弃

$<object>QueueDiscardMark : 队列消息数高于该值将会自动丢弃不重要的消息,丢弃顺序是新消息在队列头,先丢弃;

$<object>QueueDiscardSeverity: 设置队列丢弃消息级别,级别越低,丢弃越多,设置为高于队列大小或者设置为8,则不丢弃。值使用数字和文本都可以,级别在RFC 3164中定义,。

Code Severity

0 Emergency: system is unusable

1 Alert: action must be taken immediately

2 Critical: critical conditions

3 Error: error conditions

4 Warning: warning conditions

5 Notice: normal but significant condition

6 Informational: informational messages

7 Debug: debug-level messages

11. 满队列

如果队列达到设置的最大值或者最大磁盘空间,队列就满了。rsyslog会关闭节流阀(throttles),这个时候对于可靠的输入(tcp/本地日志socket)的一个好的解决方案是降低消息产生;

关闭节流阀对于不可靠源,比如UDP,是高度不推荐的;

不能无限不操作,比如对本地日志socket节流时间太长会造成整个系统停顿;

$<object>QueueTimeoutEnqueue : 设置超时时间,单位毫秒,达到时间后新到的消息将被丢弃;如果不想节流,将值设置为0;

12. 速率限制

$<object>QueueDequeueSlowdown : 出队列延迟多长时间,单位微秒(microseconds),如在udp发送action中设置为1000 微秒,则限制1秒内不多与1000条。

13. 操作时间跨度

$<object>QueueDequeueTimeBegin <hour> : 设置开始出队时间,单位小时,采用24小时格式;

$<object>QueueDequeueTimeEnd <hour>: 设置结束出队时间。

14. 性能

<object>DequeueBatchSize <number> : 一批发送消息的上限条数,该上限由可用性决定,队列从来不会等该批次达到个数再发,如果队列中消息没有达到上限条数,即使只有一条,也会发出。[default 32] 设置多少条队列作为一个batch一起出队,针对一个日志量很大的系统,可以考虑把这个值调高来增加性能,不过要结合可使用内存考虑实际情况。对于一个高并发服务端,可以设置大值(1000左右或者更多),但是考虑需要内存则需要 批次大小*工作线程数 ,即使用的硬盘队列也需要这么多内存。

15. 终止队列

程序关闭时,第一个阶段:

$<object>QueueTimeoutShutdown: 当进程关闭时,设定超时时间让队列工作线程去处理没有处理完的元素,单位毫秒;

第二个阶段:

$<object>QueueTimeoutActionCompletion : 如果第一阶段之后还有元素没有被处理,该命令用来设置工作线程处理当前元素的超时时间,单位毫秒,如果到期之后,其他消息都会被丢弃,所有剩余的工作线程被取消,队列也会被销毁;

$<object>QueueSaveOnShutdown :如果是硬盘队列或者硬盘辅助队列,在关机时不想丢失数据,可以将该命令设置为on,则会将所有队列中的元素保存到硬盘。如果队列元素较多,该操作会耗时较长,并且不能设置超时。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rsyslog