高峰只对攀登它而不是仰望它的人来说才有真正意义。

社区日报 第363期 (2018-08-14)

1.你应该在MadCap Flare中使用Elasticsearch进行模糊匹配吗?
http://t.cn/RDRY7EB
2.使用Elasticsearch 6.3 Rollup 合并旧日志。
http://t.cn/Rdr8LIZ
3.Ub​untu 搭建 Elasticsearch 6 集群流程​。
http://t.cn/RDRYbjM

活动预告:
Elastic 中国开发者大会预热票发售进行中
https://conf.elasticsearch.cn/2018/shenzhen.html
 
编辑:叮咚光军
归档:https://elasticsearch.cn/article/755
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.你应该在MadCap Flare中使用Elasticsearch进行模糊匹配吗?
http://t.cn/RDRY7EB
2.使用Elasticsearch 6.3 Rollup 合并旧日志。
http://t.cn/Rdr8LIZ
3.Ub​untu 搭建 Elasticsearch 6 集群流程​。
http://t.cn/RDRYbjM

活动预告:
Elastic 中国开发者大会预热票发售进行中
https://conf.elasticsearch.cn/2018/shenzhen.html
 
编辑:叮咚光军
归档:https://elasticsearch.cn/article/755
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

Mmap fs可能让大索引访问变得缓慢

在一年多以前,我写过Elasticsearch 5 入坑指南一文,其中提到将生产的某个ES集群从2.4升级到5.0以后, 冷数据结点搜索性能变差,对大索引进行搜索的时候,io read会长时间飙高,导致系统load很重,甚至到无法响应的程度。
 
通过进一步分析,用Linux下的Sar -B命令,可以看到有大量的数据被pagein到内存。 虽然通过“试”的方法,定位到这个问题和5.0开始使用的mmap fs有关联,并且通过更改为nio fs以后得到解决,但问题的底层根源一直没找到。 
 
近期有空重新去看了一下这个问题, 在Github上发现一个对os底层更熟悉的人提交并分析了类似的问题 Avoid file cache trashing on Linux with mmapfs by using madvise 。  细读之后,感觉该文抓到了问题的本质,以下基于该文做个总结:
  1. mmap fs对比nio fs,省去了磁盘io上的系统调用,并且不需要在jvm内部做io缓存,也减轻了GC压力。 所以通常来说,mmapfs的性能应该更高。 这也是为什么lucene推荐使用mmap fs,并且ES从5.0开始做为默认的store配置的原因。
  2. 然而,mmap系统调用,在内核层面默认会有一个2MB的预读大小设置,也就是说,当映射了一个大文件以后,即使读取其中1k个字节,mmap也会预读取2MB的数据到缓存。 这种策略是基于文件的访问大多数是顺序的假设。
  3. 在ES这个特定的应用场景,如果某数据结点上索引不是很大,系统剩余缓存也足够,一般不会有问题。但是如果是大数据应用场景,典型的如海量的日志ELK应用,则可能对大索引的搜索聚合,产生较多的随机磁盘访问。 从而mmap的预读策略,可能会导致大量的无用数据从磁盘读取到系统缓存。 在系统可用的缓存不是非常宽裕的情况下,某些极端场景下,会导致热数据被过于频繁的踢出内存,再反复读入,让磁盘IO不堪重负。
  4. Lucene有一个NativePosixUtil.madvise(buffer,NativePosixUtil.RANDOM)的native调用,可以用于指导内核对mmap过的文件做读取的时候,禁用预读。 上文作者将该调用hack进lucene代码,做搜索对比测试。 结论是对于磁盘io和cache的消耗,niofs都要好于mmapfs,而patch过的mmapfs则比niofs更好。
  5. 作者的测试仅限于搜索,对于其他类型的io操作,如写入,merge没有做过详尽测试,因此不清楚利弊。
  6. ES官方开发人员认为这是一个有趣的发现,值得深入去探究。对于用户报告的mmap fs性能比nio fs更差的问题,猜测可能是在大索引读取的场景下,预读带来的额外开销,抵消了相对niofs节省的系统调用等开销。 
  7. ES官方提到Lucene已经有一种类似功能的store,叫做NativeUnixDirectory(显然ES目前还没有对这种store的支持),用户动手能力强的话,应该可以利用这个store自己写一个ES plugin。 另外提到JAVA 10提供了O_DIRECT to streams / channels ,似乎官方打算等这个出来以后再看怎么处理这个问题。
  8. 要注意,这个预读是mmap层面的,和块设备的预读是两回事。 我们曾经尝试过使用 blockdev --setra 这个linux命令取消块设备预读,证实无法解决这个问题。

 
结论: 如果ES结点上会存放海量的索引数据,经常会有大索引(如1TB+)的搜索聚合操作,使用NIOFS会更安全,可以避免很多怪异的性能问题。
 
继续阅读 »
在一年多以前,我写过Elasticsearch 5 入坑指南一文,其中提到将生产的某个ES集群从2.4升级到5.0以后, 冷数据结点搜索性能变差,对大索引进行搜索的时候,io read会长时间飙高,导致系统load很重,甚至到无法响应的程度。
 
通过进一步分析,用Linux下的Sar -B命令,可以看到有大量的数据被pagein到内存。 虽然通过“试”的方法,定位到这个问题和5.0开始使用的mmap fs有关联,并且通过更改为nio fs以后得到解决,但问题的底层根源一直没找到。 
 
近期有空重新去看了一下这个问题, 在Github上发现一个对os底层更熟悉的人提交并分析了类似的问题 Avoid file cache trashing on Linux with mmapfs by using madvise 。  细读之后,感觉该文抓到了问题的本质,以下基于该文做个总结:
  1. mmap fs对比nio fs,省去了磁盘io上的系统调用,并且不需要在jvm内部做io缓存,也减轻了GC压力。 所以通常来说,mmapfs的性能应该更高。 这也是为什么lucene推荐使用mmap fs,并且ES从5.0开始做为默认的store配置的原因。
  2. 然而,mmap系统调用,在内核层面默认会有一个2MB的预读大小设置,也就是说,当映射了一个大文件以后,即使读取其中1k个字节,mmap也会预读取2MB的数据到缓存。 这种策略是基于文件的访问大多数是顺序的假设。
  3. 在ES这个特定的应用场景,如果某数据结点上索引不是很大,系统剩余缓存也足够,一般不会有问题。但是如果是大数据应用场景,典型的如海量的日志ELK应用,则可能对大索引的搜索聚合,产生较多的随机磁盘访问。 从而mmap的预读策略,可能会导致大量的无用数据从磁盘读取到系统缓存。 在系统可用的缓存不是非常宽裕的情况下,某些极端场景下,会导致热数据被过于频繁的踢出内存,再反复读入,让磁盘IO不堪重负。
  4. Lucene有一个NativePosixUtil.madvise(buffer,NativePosixUtil.RANDOM)的native调用,可以用于指导内核对mmap过的文件做读取的时候,禁用预读。 上文作者将该调用hack进lucene代码,做搜索对比测试。 结论是对于磁盘io和cache的消耗,niofs都要好于mmapfs,而patch过的mmapfs则比niofs更好。
  5. 作者的测试仅限于搜索,对于其他类型的io操作,如写入,merge没有做过详尽测试,因此不清楚利弊。
  6. ES官方开发人员认为这是一个有趣的发现,值得深入去探究。对于用户报告的mmap fs性能比nio fs更差的问题,猜测可能是在大索引读取的场景下,预读带来的额外开销,抵消了相对niofs节省的系统调用等开销。 
  7. ES官方提到Lucene已经有一种类似功能的store,叫做NativeUnixDirectory(显然ES目前还没有对这种store的支持),用户动手能力强的话,应该可以利用这个store自己写一个ES plugin。 另外提到JAVA 10提供了O_DIRECT to streams / channels ,似乎官方打算等这个出来以后再看怎么处理这个问题。
  8. 要注意,这个预读是mmap层面的,和块设备的预读是两回事。 我们曾经尝试过使用 blockdev --setra 这个linux命令取消块设备预读,证实无法解决这个问题。

 
结论: 如果ES结点上会存放海量的索引数据,经常会有大索引(如1TB+)的搜索聚合操作,使用NIOFS会更安全,可以避免很多怪异的性能问题。
  收起阅读 »

社区日报 第362期 (2018-08-13)

1.来自AWS的ES报警设置实践。
http://t.cn/RDTns2Y
2.利用HDFS备份实现 Elasticsearch 容灾。
http://t.cn/RDT3UHT
3.360私有云平台Elasticsearch服务初探。
http://t.cn/RYDV14C
 
活动预告:
Elastic 中国开发者大会预热票发售进行中
https://conf.elasticsearch.cn/2018/shenzhen.html
 
编辑:cyberdak
归档:https://elasticsearch.cn/article/753
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.来自AWS的ES报警设置实践。
http://t.cn/RDTns2Y
2.利用HDFS备份实现 Elasticsearch 容灾。
http://t.cn/RDT3UHT
3.360私有云平台Elasticsearch服务初探。
http://t.cn/RYDV14C
 
活动预告:
Elastic 中国开发者大会预热票发售进行中
https://conf.elasticsearch.cn/2018/shenzhen.html
 
编辑:cyberdak
归档:https://elasticsearch.cn/article/753
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第361期 (2018-08-12)

1.(自备梯子)ELK Stack 详细配置。
http://t.cn/RDWHBvW
2.Elasticsearch安全性:身份验证,加密,备份。
http://t.cn/RDWl15I
3.(自备梯子)数据科学中必备的数学知识。
http://t.cn/RDWYsfF

活动预告:
Elastic 中国开发者大会预热票发售进行中 
https://conf.elasticsearch.cn/2018/shenzhen.html

编辑:至尊宝
归档:https://elasticsearch.cn/article/752
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.(自备梯子)ELK Stack 详细配置。
http://t.cn/RDWHBvW
2.Elasticsearch安全性:身份验证,加密,备份。
http://t.cn/RDWl15I
3.(自备梯子)数据科学中必备的数学知识。
http://t.cn/RDWYsfF

活动预告:
Elastic 中国开发者大会预热票发售进行中 
https://conf.elasticsearch.cn/2018/shenzhen.html

编辑:至尊宝
归档:https://elasticsearch.cn/article/752
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第360期 (2018-08-11)

  1. 如何根据自己的日志记录来选择ES集群结构? http://t.cn/RDpOkya

  2. 一款计算向量相似度的插件。 http://t.cn/R6Nt4X3

  3. 让 Kibana 支持 Nested document的插件。 http://t.cn/RDIeIbq

活动预告

  1. 活动预告:Elastic 中国开发者大会预热票发售进行中 https://conf.elasticsearch.cn/2018/shenzhen.html
继续阅读 »
  1. 如何根据自己的日志记录来选择ES集群结构? http://t.cn/RDpOkya

  2. 一款计算向量相似度的插件。 http://t.cn/R6Nt4X3

  3. 让 Kibana 支持 Nested document的插件。 http://t.cn/RDIeIbq

活动预告

  1. 活动预告:Elastic 中国开发者大会预热票发售进行中 https://conf.elasticsearch.cn/2018/shenzhen.html
收起阅读 »

_nodes/stats thread_pool 中的bulk 在版本6.3.0中没有了,是哪个版本中取消了吗?

_nodes/stats thread_pool   中的bulk 在版本6.3.0中没有了,是哪个版本中取消了吗?
_nodes/stats thread_pool   中的bulk 在版本6.3.0中没有了,是哪个版本中取消了吗?

社区日报 第359期 (2018-08-10)

1、使用 Apache Spark 和 Elasticsearch 构建一个推荐系统
http://t.cn/RrdR6Hp
2、ElasticSearch + Canal 开发千万级的实时搜索系统
http://t.cn/RDXr8Qm
3、在Python中使用Elasticsearch
http://t.cn/RDXrs0v

活动预告:
Elastic 中国开发者大会预热票今天发售!
https://conf.elasticsearch.cn/2018/shenzhen.html 

编辑:铭毅天下
归档:https://elasticsearch.cn/article/749
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1、使用 Apache Spark 和 Elasticsearch 构建一个推荐系统
http://t.cn/RrdR6Hp
2、ElasticSearch + Canal 开发千万级的实时搜索系统
http://t.cn/RDXr8Qm
3、在Python中使用Elasticsearch
http://t.cn/RDXrs0v

活动预告:
Elastic 中国开发者大会预热票今天发售!
https://conf.elasticsearch.cn/2018/shenzhen.html 

编辑:铭毅天下
归档:https://elasticsearch.cn/article/749
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第358期 (2018-08-09)

1.探讨ES的long_range,date_range类型,可能不仅只是语法糖
http://t.cn/RDXKwq7
2.Elasticsearch 6.3 X-PACK SQL 简述
http://t.cn/RDXKUPs
3.如何建设高吞吐量的日志平台
http://t.cn/RDXK5On

活动预告
1. Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 
 
编辑:金桥
归档:https://elasticsearch.cn/article/748
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.探讨ES的long_range,date_range类型,可能不仅只是语法糖
http://t.cn/RDXKwq7
2.Elasticsearch 6.3 X-PACK SQL 简述
http://t.cn/RDXKUPs
3.如何建设高吞吐量的日志平台
http://t.cn/RDXK5On

活动预告
1. Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 
 
编辑:金桥
归档:https://elasticsearch.cn/article/748
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第357期 (2018-08-08)

1.kibana插件Logtrail终端式体验。
http://t.cn/RDMgCLh
2.es集群启动流程。
http://t.cn/RDMkAsX
3.es搜索优化。
http://t.cn/RDMkDSv

活动预告
1. Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 

编辑:wt
归档:https://elasticsearch.cn/article/747
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.kibana插件Logtrail终端式体验。
http://t.cn/RDMgCLh
2.es集群启动流程。
http://t.cn/RDMkAsX
3.es搜索优化。
http://t.cn/RDMkDSv

活动预告
1. Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 

编辑:wt
归档:https://elasticsearch.cn/article/747
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第356期 (2018-08-07)

1.容易造成Elasticsearch崩溃的一些操作。
http://t.cn/RDbSVIO
2.使用datadog监控Elasticsearch集群。
http://t.cn/RDbSibW
3.Elasticsearch远程日志。
http://t.cn/RDbOX9U 

活动预告
1. Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 

编辑:叮咚光军
归档:https://elasticsearch.cn/article/746
订阅:https://tinyletter.com/elastic-daily
 
继续阅读 »
1.容易造成Elasticsearch崩溃的一些操作。
http://t.cn/RDbSVIO
2.使用datadog监控Elasticsearch集群。
http://t.cn/RDbSibW
3.Elasticsearch远程日志。
http://t.cn/RDbOX9U 

活动预告
1. Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 

编辑:叮咚光军
归档:https://elasticsearch.cn/article/746
订阅:https://tinyletter.com/elastic-daily
  收起阅读 »

社区日报 第355期 (2018-08-06)

1、跟随 car2go 学习使用 ELK Stack 来做商业分析
http://t.cn/RDw9baD
2、es相关的分布式一致性算法介绍:bully,gossip,raft
http://t.cn/Rt3MpnJ
3、磁盘RAID的各种IOPS计算方式以及测试
http://t.cn/RDwLG6x

活动预告:
Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html

编辑:cybedak
归档:https://elasticsearch.cn/article/745
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1、跟随 car2go 学习使用 ELK Stack 来做商业分析
http://t.cn/RDw9baD
2、es相关的分布式一致性算法介绍:bully,gossip,raft
http://t.cn/Rt3MpnJ
3、磁盘RAID的各种IOPS计算方式以及测试
http://t.cn/RDwLG6x

活动预告:
Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html

编辑:cybedak
归档:https://elasticsearch.cn/article/745
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第354 (2018-08-05)

1.Kubernetes使用Fluentd和Logz.io记录日志。
http://t.cn/RDPaFVJ
2.Docker使用EFK记录日志。
http://t.cn/RDPNDt3
3.(自备梯子)如何像数据科学家一样思考的12个步骤。
http://t.cn/RDP9e3d

活动预告:
Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 

编辑:至尊宝
归档:https://elasticsearch.cn/article/744
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.Kubernetes使用Fluentd和Logz.io记录日志。
http://t.cn/RDPaFVJ
2.Docker使用EFK记录日志。
http://t.cn/RDPNDt3
3.(自备梯子)如何像数据科学家一样思考的12个步骤。
http://t.cn/RDP9e3d

活动预告:
Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 

编辑:至尊宝
归档:https://elasticsearch.cn/article/744
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第353期 (2018-08-04)

  1. lucene中使用bloom Filter的原理。 http://t.cn/ReFUk9G

  2. 在OpenShift处理多行日志以传入ELK的方法(需翻墙)。 http://t.cn/ReFtZn0

  3. ES中id长度的限制。 http://t.cn/ReFVJli

活动预告

  1. Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作 https://conf.elasticsearch.cn/2018/shenzhen.html
继续阅读 »
  1. lucene中使用bloom Filter的原理。 http://t.cn/ReFUk9G

  2. 在OpenShift处理多行日志以传入ELK的方法(需翻墙)。 http://t.cn/ReFtZn0

  3. ES中id长度的限制。 http://t.cn/ReFVJli

活动预告

  1. Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作 https://conf.elasticsearch.cn/2018/shenzhen.html
收起阅读 »

社区日报 第352期 (2018-08-03)

1、LUCENE索引结构漫谈
http://t.cn/Re1Dp6g
2、用Elasticsearch构建电商搜索平台
http://t.cn/Re1DBee
3、ElasticSearch 监控实战
http://t.cn/ReLSsjr

活动预告:
Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 

编辑:铭毅天下
归档:https://elasticsearch.cn/article/741
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1、LUCENE索引结构漫谈
http://t.cn/Re1Dp6g
2、用Elasticsearch构建电商搜索平台
http://t.cn/Re1DBee
3、ElasticSearch 监控实战
http://t.cn/ReLSsjr

活动预告:
Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 

编辑:铭毅天下
归档:https://elasticsearch.cn/article/741
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第351期 (2018-08-02)

1.如何优化beats性能
http://t.cn/Re8KXlI
2.logstash input插件开发
http://t.cn/Re8KCox
3.容器监控方案 cAdvisor + Elasticsearch
http://t.cn/RS7tLSW

活动预告
1. Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 
 
编辑:金桥
归档:https://elasticsearch.cn/article/740
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.如何优化beats性能
http://t.cn/Re8KXlI
2.logstash input插件开发
http://t.cn/Re8KCox
3.容器监控方案 cAdvisor + Elasticsearch
http://t.cn/RS7tLSW

活动预告
1. Elastic 中国开发者大会 2018 ,开始接受演讲申请和赞助合作
https://conf.elasticsearch.cn/2018/shenzhen.html 
 
编辑:金桥
归档:https://elasticsearch.cn/article/740
订阅:https://tinyletter.com/elastic-daily 收起阅读 »