【发布时间】:2020-05-21 17:08:16
【问题描述】:
环境描述:
kubernetes、ubuntu、1 核、rabbitmq 3.7.24、erlang 22.3.1
rabbitmq 大约有 6 个队列,每个队列传入/传递 50/s。但 CPU 使用率有 50%。日志级别是信息。
顶级进程: enter image description here
top -H -p pid
为什么日志输出很少,却占用了很多CPU。
【问题讨论】:
环境描述:
kubernetes、ubuntu、1 核、rabbitmq 3.7.24、erlang 22.3.1
rabbitmq 大约有 6 个队列,每个队列传入/传递 50/s。但 CPU 使用率有 50%。日志级别是信息。
顶级进程: enter image description here
top -H -p pid
为什么日志输出很少,却占用了很多CPU。
【问题讨论】:
主要问题是 Erlang 的调度程序,而不是 error_logger。这个问题有两种解决方案。
禁用投机忙等待:
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="+sbwt none +sbwtdcpu none +sbwtdio none"
减少调度器的数量:
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="+S 1:1"
此配置应写入/etc/rabbitmq/rabbitmq-env.conf 文件。请参考the RabitMQ Runtime Tuning documentation。
【讨论】: