我用 ray 创建了一个简单的远程函数,它占用的内存很少。但是,运行一小段时间后,内存稳步增加,并且出现 RayOutOfMemoryError 异常。
下面的代码是这个问题的一个非常简单的例子。“result_transformed” numpy 数组被发送给工作人员,每个工作人员都可以在其中进行工作。我的简化 calc_similarity 函数什么也不做,但它仍然耗尽内存。我为该方法添加了更长的睡眠时间来模拟做更多的工作,但它最终会耗尽内存。
我在 8 核 Intel 9900K 上运行,32GB RAM 和 Ubuntu 19.10 Python 是:Intel Python Distribution 3.7.4 numpy is 1.17.4 (with intel mkl)
import numpy as np
from time import sleep
import ray
import psutil
@ray.remote
def calc_similarity(sims, offset):
# Fake some work for 100 ms.
sleep(0.10)
return True
if __name__ == "__main__":
# Initialize RAY to use all of the processors.
num_cpus = psutil.cpu_count(logical=False)
ray.init(num_cpus=num_cpus)
num_docs = 1000000
num_dimensions = 300 …Run Code Online (Sandbox Code Playgroud) 当我在 Kibana 中运行搜索并返回数百个文档时,我收到一条错误消息,指出结果太大。实际的错误信息如下:
无法存储大于 [10485760] 字节的异步搜索响应。可以通过更改设置来设置此限制
[search.max_async_search_response_size]。
这似乎不是我可以在 UI 中更改的内容。事实上,只需在 Kibana Discover 中单击此索引而不进行搜索,就会收到此错误。如果运行的搜索仅返回一些(数十个文档),我将得到预期的结果,但否则我将得到这些类型的结果。
我的索引包含大约 300K 文档,大多数文档相对较小,但大约有 40 到 50 个字段(主要是文件元数据和一些其他元数据类型字段)。
有人对此有什么建议吗?