我计划在每台ec2服务器(大约50-60 ec2服务器)上安装elasticsearch python客户端,将数据发送到我的单个ES集群。 每个python客户端都会每秒向ES集群发送批量json。总计 - 每秒50/60批量指数 每个批量json可以有最多~500个文件/ ~3-4 MB批量json。假设我使用20节点集群m4.large或更多。 我的问题是
根据我的经验,您应该使用您的特定设置进行测试。
这取决于:
1.在测试运行期间查看来自服务器的数据
curl localhost:9200 / _cat / thread_pool?v = true
node_name name active queue rejected
prodnode bulk 0 0 0
prodnode fetch_shard_started 0 0 0
prodnode fetch_shard_store 0 0 0
prodnode flush 0 0 0
prodnode force_merge 0 0 0
prodnode generic 0 0 0
prodnode get 0 0 0
prodnode index 0 0 0
prodnode listener 0 0 0
prodnode management 1 0 0
prodnode refresh 0 0 0
prodnode search 0 0 0
prodnode snapshot 0 0 0
prodnode warmer 0 0 0
根据我的经验,你提到的数字应该可以通过集群来管理。您可能面临的第一个问题:批量拒绝(really good article about this)。您可以编码容忍它并重新发送失败的文档吗?通过设计,批量查询可以更好地合并到单个队列,并让一个代理将它们发送到集群。如果无法跟上,群集将锁定它或节流。最好进行实验。
3.与索引时间和群集内通信相比,编码和网络延迟要小得多,因此您选择哪一个并不重要。