Elastic版本: 6.6.1
本地(4核,16G)运行单个节点的ES(启动时参数基本都是默认的),同时使用RestHighLevelClient循环写入1000条(每条<1K)数据,无论是SyncIndex,还是AsyncIndex,发现耗时50s左右,相当于每秒才写入20条
问题: 不考虑bulk操作,这种速度是否正常(感觉太慢)?有没有优化办法?
自己回复,希望能帮到别人。
修改translog的持久化参数,参考这里
比如:
PUT /test/_settings
{
"translog.durability": "async"
}
这之后测试,每秒写入速度达到了500+,比之前20提高了25倍。
有试过调整RestHighLevelClient的连接池参数吗?默认的是比较小的,可能是在本地排队了。
主要是调整maxTotal和maxPerRoute
RestClientBuilder builder = RestClient.builder(Stream.of(properties.getAddresses()
.split(",")).map(HttpHost::create).toArray(HttpHost[]::new));
builder.setHttpClientConfigCallback(b -> {
if (properties.getMaxConnTotal() != null) {
b.setMaxConnTotal(properties.getMaxConnTotal());
}
if (properties.getMaxConnPerRoute() != null) {
b.setMaxConnPerRoute(properties.getMaxConnPerRoute());
}
return b;
});
return new RestHighLevelClient(builder);
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.