调整JVM堆内存
vim /etc/logstash/jvm.options
最小值(Xms)最大值(Xmx)设置为相同的值
在设置时,要考虑到系统与其他进程,保留一定的内存给他们

调整pipeline.workers 线程数,建议与CPU内核数保持一致
调整pipeline.batch.size批量发送事件的值
调整pipeline.batch.delay 批量发送事件的最大等待时间

如果你的架构中使用kafka消息队列系统作为缓存,也可以针对kafka进行优化
1. vim /opt/kafka/config/server.properties
num.network.threads 增加服务器用于从网络接收请求并向网络发送响应的线程数
num.io.threads 增加服务器用于处理请求的线程数,其中可能包括磁盘I/O
num.partitions 增加分区数


2.vim /opt/kafka/config/producer.properties
batch.size 默认的消息批次大小,不要设置太大,会导致消息需要等很久才被发出,增加网络延时
linger.ms 消息批次等待时间,当消息批次大小一直未达到默认的消息批次大小,在等待该时长后将消息发出
buffer.memory 生产者可以用来缓冲等待发送到服务器的消息的总内存字节数

加大磁盘容量,避免因为磁盘空间不足导致的问题:
当存储超过95%的磁盘中的节点上分配了一个或多个分片的任何索引,该索引将被强制进入只读模式
报错如下:
[INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"})
在kibana中执行以下操作即可

PUT _settings
{
"index": {
"blocks": {
"read_only_allow_delete": null
}
}
}