注意:我在输出插件中只有弹性搜索。在输入插件中,最多可以有30个输入(每个文件一个输入)。过滤器插件中的过滤器很少。
我运行了以下测试场景,并得到了意想不到的结果(最后提到)
测试方案:
i5和i7机器分别具有RAM 8 Gb和16 Gb,并且分别具有~2.5-3Gb和~9Gb的空闲内存(在运行logstash之前)。
以下场景中使用的日志相同,大小约为1Gb。
1)
计算机:i5(总核心4)
配置 :(默认值) pipeline.workers = 4和 pipeline.output.workers = 1
结果:logstash没有记录任何错误/警告。
处理日志的总时间:~30分钟
2)
计算机:i7(总核心数8)
配置 :(默认值) pipeline.workers = 8和 pipeline.output.workers = 1
结果:由于logstash日志中存在读取超时错误,因此ES上似乎存在负载。
3)
计算机:i7(总核心数8)
配置 :(自定义值) pipeline.workers = 4和 pipeline.output.workers = 1/2/3(增加了每次1小时)
结果:由于logstash日志中存在读取超时错误,因此每个方案中的ES似乎都有负载。
4)
计算机:i7(总核心数8)
配置 :(自定义值) pipeline.workers = 4和 pipeline.output.workers = 4
结果:logstash没有记录任何错误/警告,但与方案1相比,总时间增加了约20分钟。
总时间:~50分钟
我想到了问题:
1)在logstash中,管道输出工人是否与管道工人相等有任何负面影响吗?
2)如果我们比较案例情景1和4,为什么总时间会增加?与i5机器相比,在i7机器上应该更快地处理日志。
3)可以做些什么来在两台机器上获得相同的性能(或更好的性能)? (即对于1Gb日志,总处理时间<= ~30分钟)