Hello,World

请教如何提升es集群的写入性能

Elasticsearch | 作者 taoyang987 | 发布于2020年07月15日 | 阅读数:4668

三台4cpu/8G 的机器做了es集群,通过filebeat采集数据发送到graylog,再存到es集群中。
es集群每秒最高写入docs也就1.5K/S,数据都堆积在graylog中来不及存进去。
查看几台es机器的信息,jvm按照官方推荐设置为4g,虚拟内存关闭
cpu:空闲90%以上,ram空闲3g左右(包含buffers),IO 2.5M/S。
全部是idc的机房里的机器,应该都是千兆网络。
那么问题来了,为啥es没把任何一项机器资源吃满?
我读取性能差点无所谓,主要是想解决日志搜集高峰期的性能问题。

请问各位大佬有啥思路?
已邀请:

hellboy

赞同来自:

问题我觉得还是处在graylog上,我没有用过这个,不知道性能怎么样,但是如果使用logstash问题不大,
为了提高写入性能,一下方案供你选择:
1、考虑将副本设为0,等数据写完再改成1,前提是对数据可靠性不是要求很高的情况下可以考虑。
2、调整refresh间隔,默认是1s,生产环境下,可以设为60S往上,反正你对数据的实时性读取不敏感。同时还要注意indexbuffer的大小,默认是48M,可以在yml文件中静态配置往高调。
3、降低translog落盘频率,默认是每个请求都要落盘的,可以修改为异步写入,index.translog.durability:async,和index.translog.sync_interval:60s (注意,如果集群在一分钟钟内重启,会丢失数据,所以慎重选择)还有就是 index.translog.flush_throshod_size:521Mb 超过该值触发flush。
 
 

pony_maggie - 公众号:犀牛饲养员的技术笔记

赞同来自:

继续补充楼上的:
1. batch写入,而不是单个文档写入
2. 索引的mapping不要太大,不需要的字段不用写

JingSQ - 招聘Elasticsearch内核研发工程师

赞同来自:

你这个需要细粒度的监控指标,如果没有的话只能猜:
  1. 是否有分词字段?如果有可能会占用比较多资源。
  2. 是否有Update?会有写前读和合并。
  3. 是否有某台机器慢或者网络问题导致长尾。
  4. 是否写入线程数配置少了。

 
等等等。

taoyang987

赞同来自:

解决问题了,原来是graylog jvm默认配置太小, 只有1g ,改成6g后,性能就从1000升到10000.
问题排查方向完全错掉了.
被graylog的outpubuffer数据显示给误导了.

taoyang987

赞同来自:

中间我还尝试过用esrally进行性能测试,用的http_logs这个track,写入速度大概是15w.用graylog集群写入速度2w.中间这差距也不知道是否正常.但是http_logs的每条数据量都很小,而且字段很少.把graylog index导出来的数据拿去做esrally性能测试,但是死活有问题.那暂时也搁置,将来有机会再去解决.
随便贴两条http_logs和graylog写入的数据.
一个字符数约150 ,一个约1400,同样一条消息,字符量相差10倍,这么看起来差不多是极限了.观察es节点服务器,貌似是io性能快到极限了.
 


{"@timestamp": 895435223, "clientip":"26.105.4.0", "request": "GET /english/competition/format_of_tournament.htm HTTP/1.0", "status": 200, "size": 7893}


 


{"fields_is_tomcat":true,"agent_id":"298d905e-b9c4-41a1-831a-bb3094bdac59","agent_name":"ZJHZ-CMREAD-MGWX02-VINT-SD","agent_hostname":"ZJHZ-CMREAD-MGWX02-VINT-SD","collector_node_id":"ZJHZ-CMREAD-MGWX02-VINT-SD","log_offset":104283920,"g
l2_remote_ip":"10.158.56.50","@metadata_version":"7.8.0","gl2_remote_port":16569,"source":"ZJHZ-CMREAD-MGWX02-VINT-SD","beats_type":"filebeat","gl2_source_input":"5f06d66152e46a698ce1a3ca","ecs_version":"1.5.0","is_wxw":"true","@metadata
_beat":"filebeat","fields_is_war":true,"@metadata_type":"_doc","log_file_path":"/home/commonservice/data/tomcat73/logs/migu/migu_info.log","gl2_source_node":"10.158.56.49dafba78c-441d-4afa-a16d-bfdff9cbe720","fields_tomcat_app":"wenxuein
terface","timestamp":"2020-07-31 08:42:08.560","gl2_accounted_message_size":882,"gl2_source_collector":"97d046b6-1152-4b55-9664-778350724767","agent_ephemeral_id":"2a8ef2d1-a998-42b3-8cfc-7d7b7d45076e","streams":["00000000000000000000000
1","5f20d61fbdc0f6519b77064c"],"input_type":"log","gl2_message_id":"01EEJ0JA86X8ZPJFT814F031QW","message":"2020-07-31 16\\:42\\:08  [ http-nio-8883-exec-1\\:59251132 ] - [ ERROR ]  post url=htxxtp://172.16.2.221:7280/csu/portalengine/getUs
erInfo;httxxp result code =200","tags":["tomcat","war","wxw"],"fields_is_wxw":true,"agent_type":"filebeat","agent_version":"7.8.0","@timestamp":"2020-07-31T08:42:08.560Z","host_name":"ZJHZ-CMREAD-MGWX02-VINT-SD"}

匿名用户

匿名用户

赞同来自:

ES用4c8g的玩具真的挺扯淡的。

要回复问题请先登录注册