在弹性搜索上跟随函数运行范围查询,当我在多线程环境中重复使用此函数时,内存急剧增加,直到应用程序崩溃。
有人可以解决这个问题吗?
for val in x:
df.loc[df['City'].str.contains(val), 'City'] = val
这是我运行应用程序后的内存使用情况图片
我尝试了不同的解决方案,例如同步上述功能,但没有一个解决问题!
答案 0 :(得分:1)
不确定所使用的Elasticsearch客户端版本,但您可能对this elasticsearch rest客户端内存泄漏感兴趣。
此外,我不确定要传入哪个restHighLevelClient
或在方法中创建的那个。只有一个有效,但无论如何,我建议在与客户端一起使用时,调用restHighLevelClient.close()
或在try-with-resources中使用它。
try (RestHighLevelClient restHighLevelClient =
new RestHighLevelClient(RestClient.builder(new HttpHost("localhost",9200,"http"))) {
...
}