1
1
[[hardware]]
2
2
=== 硬件
3
3
4
- 按照正常的流程,你可能已经((("deployment", "hardware")))((("hardware")))在自己的笔记本电脑或集群上使用了 Elasticsearch 。
4
+ 按照正常的流程,你可能已经((("deployment", "hardware")))((("hardware")))在自己的笔记本电脑或集群上使用了 Elasticsearch。
5
5
但是当要部署 Elasticsearch 到生产环境时,有一些建议是你需要考虑的。这里没有什么必须要遵守的准则,Elasticsearch 被用于在众多的机器上处理各种任务。基于我们在生产环境使用 Elasticsearch 集群的经验,这些建议可以为你提供一个好的起点。
6
6
7
7
==== 内存
14
14
15
15
==== CPUs
16
16
17
- 大多数 Elasticsearch 部署往往对CPU要求很小 。因此,((("CPUs (central processing units)")))((("hardware", "CPUs")))确切的处理器安装事项少于其他资源。你应该选择具有多个内核的现代处理器,常见的集群使用两到八个核的机器。
17
+ 大多数 Elasticsearch 部署往往对 CPU 要求很小 。因此,((("CPUs (central processing units)")))((("hardware", "CPUs")))确切的处理器安装事项少于其他资源。你应该选择具有多个内核的现代处理器,常见的集群使用两到八个核的机器。
18
18
19
19
如果你要在更快的CPUs和更多的核心之间选择,选择更多的核心更好。多个内核提供的额外并发远胜过稍微快一点点的时钟频率。
20
20
21
21
==== 硬盘
22
22
23
23
硬盘对所有的集群都很重要,((("disks")))((("hardware", "disks")))对高度索引的集群更是加倍重要(例如那些存储日志数据的)。硬盘是服务器上最慢的子系统,这意味着那些写入量很大的集群很容易让硬盘饱和,使得它成为集群的瓶颈。
24
24
25
- 如果你负担得起 SSD ,它将远远超出任何旋转媒介(注:机械硬盘,磁带等)。 基于 SSD 的节点,查询和索引性能都有提升。如果你负担得起, SSD 是一个好的选择。
25
+ 如果你负担得起 SSD,它将远远超出任何旋转媒介(注:机械硬盘,磁带等)。 基于 SSD 的节点,查询和索引性能都有提升。如果你负担得起, SSD 是一个好的选择。
26
26
27
27
.检查你的 I/O 调度程序
28
28
****
29
- 如果你正在使用 SSDs ,确保你的系统 I/O 调度程序是((("I/O scheduler")))配置正确的。
29
+ 如果你正在使用 SSDs,确保你的系统 I/O 调度程序是((("I/O scheduler")))配置正确的。
30
30
当你向硬盘写数据,I/O 调度程序决定何时把数据
31
31
_实际_ 发送到硬盘。大多数默认 *nix 发行版下的调度程序都叫做 `cfq` (完全公平队列)。
32
32
33
33
调度程序分配 _时间片_ 到每个进程。并且优化这些到硬盘的众多队列的传递。但它是为旋转媒介优化的:
34
34
旋转盘片的固有特性意味着它写入数据到基于物理布局的硬盘会更高效。
35
35
36
- 这对 SSD 来说是低效的,然而,尽管这里没有涉及到旋转盘片。但是,`deadline` 或者 `noop` 应该被使用。`deadline`调度程序基于写入等待时间进行优化,
37
- `noop`只是一个简单的 FIFO 队列。
36
+ 这对 SSD 来说是低效的,然而,尽管这里没有涉及到旋转盘片。但是,`deadline` 或者 `noop` 应该被使用。`deadline` 调度程序基于写入等待时间进行优化,
37
+ `noop` 只是一个简单的 FIFO 队列。
38
38
39
39
这个简单的更改可以带来显著的影响。仅仅是使用正确的调度程序,我们看到了500倍的写入能力提升。
40
40
****
@@ -43,7 +43,7 @@ _实际_ 发送到硬盘。大多数默认 *nix 发行版下的调度程序都
43
43
44
44
使用 RAID 0 是提高硬盘速度的有效途径,对旋转硬盘和 SSD 来说都是如此。没有必要使用镜像或其它 RAID 变体,因为高可用已经通过 replicas 内建于 Elasticsearch 之中。
45
45
46
- 最后,避免使用网络附加存储(NAS)。人们常声称他们的 NAS 解决方案比本地驱动器更快更可靠。除却这些声称,
46
+ 最后,避免使用网络附加存储 (NAS)。人们常声称他们的 NAS 解决方案比本地驱动器更快更可靠。除却这些声称,
47
47
我们从没看到NAS能配得上它的大肆宣传。 NAS 常常很慢,显露出更大的延时和更宽的平均延时方差,而且它是单点故障的。
48
48
49
49
==== 网络
@@ -60,10 +60,10 @@ Elasticsearch 假定所有节点都是平等的--并不会因为有一半的节
60
60
61
61
==== 一般注意事项
62
62
63
- 获取真正的巨型机器在今天是可能的 :((("hardware", "general considerations")))成百 GB 的 RAM 和 几十个 CPU 核心。
63
+ 获取真正的高配机器在今天是可能的 :((("hardware", "general considerations")))成百 GB 的 RAM 和 几十个 CPU 核心。
64
64
反之,在云平台上串联起成千的小虚拟机也是可能的,例如 EC2。哪条道路是最好的?
65
65
66
- 通常,选择中到大型机器更好。避免使用小型机器 ,
67
- 因为你不会希望去管理拥有上千个节点的集群,而且在这些小型机器上 运行 Elasticsearch 的开销也是显著的。
66
+ 通常,选择中配或者高配机器更好。避免使用低配机器 ,
67
+ 因为你不会希望去管理拥有上千个节点的集群,而且在这些低配机器上 运行 Elasticsearch 的开销也是显著的。
68
68
69
- 与此同时,避免使用真正的巨型机器 。它们通常会导致资源使用不均衡(例如,所有的内存都被使用,但 CPU 没有)而且在单机上运行多个节点时,会增加逻辑复杂度。
69
+ 与此同时,避免使用真正的高配机器 。它们通常会导致资源使用不均衡(例如,所有的内存都被使用,但 CPU 没有)而且在单机上运行多个节点时,会增加逻辑复杂度。
0 commit comments