Multithreading Elasticsearch即使在满载情况下也只使用一半的cpu内核
我已经在我的服务器(Windows server 2012)上安装了Elasticsearch。当我运行几个查询请求作为压力测试时,只使用了一半的CPU核。为什么?Multithreading Elasticsearch即使在满载情况下也只使用一半的cpu内核,multithreading,elasticsearch,multicore,windows-server-2012,Multithreading,elasticsearch,Multicore,Windows Server 2012,我已经在我的服务器(Windows server 2012)上安装了Elasticsearch。当我运行几个查询请求作为压力测试时,只使用了一半的CPU核。为什么? 您是否使用默认的elasticsearch配置 确保不限制用于搜索/批量/索引的线程数。 默认值得到了很好的优化,无需更改。默认线程数(搜索除外)设置为计算机上的内核数。对于搜索,它是(核心数*3) elasticsearch.yml文件中的搜索配置示例(您应该避免): threadpool.search.type:已修复 thr
您是否使用默认的elasticsearch配置 确保不限制用于搜索/批量/索引的线程数。 默认值得到了很好的优化,无需更改。默认线程数(搜索除外)设置为计算机上的内核数。对于搜索,它是(核心数*3) elasticsearch.yml文件中的搜索配置示例(您应该避免):
threadpool.search.type:已修复
threadpool.search.size:
这是虚拟机吗?是的。那么虚拟机有什么问题呢?当你说它使用了一半的CPU核时,你是说虚拟机或主机的一半内核?请提供更多关于正在运行的测试的说明。除了设置群集名称和碎片数外,我没有更改yaml配置文件中的任何配置。感谢你的贡献Rafi,但我的elasticsearch.yaml文件中没有任何额外配置。我唯一可以补充的是elasticsearch应用程序托管在虚拟windows server 2012 r2上。@HosseinBakhtiari可能已经太晚了,但您有多少碎片?根据我个人的经验,在shard中搜索只占一个核心。因此,如果您的碎片数是核心数的一半,您将只看到50%的利用率。@DaTval有没有办法强制它使用所有核心?我只得到了1块碎片,这对于中等规模的eshop来说是完全可以的(~30k products,@ulkas)你的搜索速度太慢了吗?你真的需要使用更多的内核吗?你有并发搜索吗?如果有,考虑更积极地使用复制因子。比如在同一个节点上多次启动ES并将其视为群集。ES将循环搜索,你将更好地利用你的资源。@DaTval t事实并非如此。我没有太多的QP,因为聚合太多,我只得到几秒钟的缓慢查询。拆分为多个碎片/节点没有任何效果,因为所有碎片都必须计算所有内容,而且恐怕没有工作分配(据我所知和我的测试显示).现在,我要放松查询,根本没有聚合,这对我来说是一个很大的结果影响