1、64 GB 内存的机器是非常理想的, 但是 32 GB 和 16 GB 机器也是很常见的。

少于 8 GB 会适得其反。

2、如果你要在更快的 CPUs 和更多的核心之间选择,选择更多的核心更好。多

个内核提供的额外并发远胜过稍微快一点点的时钟频率。

3、如果你负担得起 SSD,它将远远超出任何旋转介质。 基于 SSD 的节点,查

询和索引性能都有提升。如果你负担得起,SSD 是一个好的选择。

4、即使数据中心们近在咫尺,也要避免集群跨越多个数据中心。绝对要避免集群

跨越大的地理距离。

5、请确保运行你应用程序的 JVM 和服务器的 JVM 是完全一样的。 在

Elasticsearch 的几个地方,使用 Java 的本地序列化。6、通过设置 gateway.recover_after_nodes、gateway.expected_nodes、

gateway.recover_after_time 可以在集群重启的时候避免过多的分片交换,这可

能会让数据恢复从数个小时缩短为几秒钟。

7、Elasticsearch 默认被配置为使用单播发现,以防止节点无意中加入集群。只

有在同一台机器上运行的节点才会自动组成集群。最好使用单播代替组播。

8、不要随意修改垃圾回收器(CMS)和各个线程池的大小。

9、把你的内存的(少于)一半给 Lucene(但不要超过 32 GB!),通过

ES_HEAP_SIZE 环境变量设置。

10、内存交换到磁盘对服务器性能来说是致命的。如果内存交换到磁盘上,一个

100 微秒的操作可能变成 10 毫秒。 再想想那么多 10 微秒的操作时延累加起

来。 不难看出 swapping 对于性能是多么可怕。

11、Lucene 使用了大量 的文件。同时,Elasticsearch 在节点和 HTTP 客户端

之间进行通信也使用了大量的套接字。 所有这一切都需要足够的文件描述符。你

应该增加你的文件描述符,设置一个很大的值,如 64,000。

补充:索引阶段性能提升方法

1、使用批量请求并调整其大小:每次批量数据 5–15 MB 大是个不错的起始点。

2、存储:使用 SSD

3、段和合并:Elasticsearch 默认值是 20 MB/s,对机械磁盘应该是个不错的设

置。如果你用的是 SSD,可以考虑提高到 100–200 MB/s。如果你在做批量导入,

完全不在意搜索,你可以彻底关掉合并限流。另外还可以增加

index.translog.flush_threshold_size 设置,从默认的 512 MB 到更大一些的

值,比如 1 GB,这可以在一次清空触发的时候在事务日志里积累出更大的段。

4、如果你的搜索结果不需要近实时的准确度,考虑把每个索引的

index.refresh_interval 改到 30s。

5、如果你在做大批量导入,考虑通过设置 index.number_of_replicas: 0 关闭副

本。

最新文章

  1. jdbcTemplate的Dao层封装
  2. jfinal相关
  3. .NET领域驱动设计—看DDD是如何运用设计模式颠覆传统架构
  4. 用webdriver+phantomjs实现无浏览器的自动化过程
  5. Oracle11g 32位安装步骤
  6. 查看静态库(.a文件)内容
  7. android短信发送器源代码
  8. Unity编程回忆录之控制物体移动
  9. UVA1218--树形DP
  10. 优步北京B组(8月10日-8月16日奖励规则)
  11. 新浪微博。。openapi 分享 图画+ 写作
  12. Win7+QTP10.0+IE9无法启动IE的解决方法
  13. 照着例子学习 protobuf-lua
  14. 计算机17-1,2作业D
  15. [oracle]解决ora-01034 oracle not available
  16. Android Lifecycle使用
  17. ⌈洛谷1312⌋⌈NOIP提高组2011⌋Mayan游戏【搜索】
  18. 安卓中使用HttpURLConnection连接网络简单示例 --Android网络编程
  19. [Codeforces721E]Road to Home
  20. elasticsearch5.5

热门文章

  1. Centos7使用kubeadm安装1.23.1版本的k8s集群
  2. Vue 源码解读(9)—— 编译器 之 优化
  3. centos7 配置 zabbix 3 & apache , nginx 与php, mysql 的交互(基本)
  4. go泛型教程
  5. CAS 比较并交换
  6. PHP数组和字符串函数
  7. Linux内存泄漏
  8. CacheManager Net Core Redis 缓存
  9. 程序设计基础·Java学习笔记·面向对象(上)
  10. JDK8的 CHM 为何放弃分段锁