我们产线上使用 logstash-input-file 从文件抓数据,然后通过logstash-output-kafka 将数据发送到kafka,现在就是output线程使用CPU很高。
1. 环境: CT7.
2. 版本: Logstash 5.6.9 AND logstash-output-kafka 4.0.5
3. TOP的结果:
两个worker消耗CPU
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3714 root 20 0 4253288 769760 16332 R 86.7 4.7 3324:30 [main]>worker0
3715 root 20 0 4253288 769760 16332 R 86.7 4.7 3320:29 [main]>worker1
4. thread dump 结果(看起来是卡在发送的encode阶段)
"[main]>worker0" #33 daemon prio=5 os_prio=0 tid=0x00007f344021e000 nid=0xe82 runnable [0x00007f344e92f000]
java.lang.Thread.State: RUNNABLE
at java.lang.StringCoding$StringEncoder.encode(StringCoding.java:304)
at java.lang.StringCoding.encode(StringCoding.java:344)
at java.lang.String.getBytes(String.java:918)