为啥连接终止

Posted

技术标签:

【中文标题】为啥连接终止【英文标题】:Why connection is terminating为什么连接终止 【发布时间】:2015-09-02 03:55:06 【问题描述】:

我正在尝试使用 R 中的 H2O 库在具有 7000 万行和 25 个数字特征的训练集上构建随机森林分类模型。总文件大小为 5.6 GB。

验证文件的大小为 1 GB。

我的系统上有 16 GB RAM 和 8 核 CPU。

系统成功读取了 H2O 对象中的两个文件。

然后我给出以下命令来构建模型:

model <- h2o.randomForest(x = c(1:18,20:25), y = 19, training_frame = traindata, 
                          validation_frame = testdata, ntrees = 150, mtries = 6)

但几分钟后(没有生成任何树),我收到以下错误:

“.h2o.doSafeREST 中的错误(conn = conn, h2oRestApiVersion = h2oRestApiVersion, : 意外的 CURL 错误:接收失败:对等方重置连接”

但是,如果我用 1 棵树尝试上面的代码,它会成功运行。

出现上述错误是因为内存问题吗?任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

你可能内存不足。尝试在森林生长期间查看系统的内存使用情况。也尝试直接从 H2O web 控制台启动训练(默认为http://localhost:54321/),可能会给出更详细的错误。

【讨论】:

我检查了森林生长期间的内存使用情况。内存迅速下降,最后我得到连接错误。我会杀掉其他进程,只运行 RF 算法。 如果有帮助,请告诉我们。或者,您可以尝试对资源要求较低的 ML 方法,例如深度神经网络,它也存在于 H2O 基础版中。 这是我的错误。以前我使用默认内存选项运行 H2O 实例(这对我的数据来说太少了)。现在我正在使用 -Xmx14g 选项运行 H2O 实例,并且算法运行成功。干杯...:)。如果我的准确率低于阈值,我会考虑你对深度学习的建议。【参考方案2】:

这是一个 OutOfMemoryError。此错误消息在 R 端的一个变体是:

Error in .h2o.doSafeREST(conn = conn, h2oRestApiVersion = h2oRestApiVersion,  : 
  Unexpected CURL error: Empty reply from server

检查 h2o 服务器日志(您也应该这样做)会告诉您:

10-08 20:11:57.165 192.168.0.4:54321     2125   #58072-18 INFO: Total file size: 1.81 GB
10-08 20:11:57.165 192.168.0.4:54321     2125   #58072-18 INFO: Parse chunk size 4194304
        onExCompletion for water.parser.ParseDataset$MultiFileParseTask@3588360e
        java.lang.OutOfMemoryError: Java heap space
:
:
Exception in thread "FJ-0-11" java.lang.OutOfMemoryError: Java heap space
2015-10-08 20:13:14.493:WARN:oejut.QueuedThreadPool:1 threads could not be stopped
10-08 20:13:23.033 192.168.0.4:54321     2125   FJ-0-5    ERRR: Out of Memory, Heap Space exceeded, increase Heap Size, from /192.168.0.4:54321
10-08 20:13:23.458 192.168.0.4:54321     2125   FJ-0-3    ERRR: Out of Memory, Heap Space exceeded, increase Heap Size, from /192.168.0.4:54321
10-08 20:13:23.033 192.168.0.4:54321     2125   FJ-0-13   ERRR: Out of Memory, Heap Space exceeded, increase Heap Size, from /192.168.0.4:54321
10-08 20:13:23.033 192.168.0.4:54321     2125   FJ-0-7    ERRR: Out of Memory, Heap Space exceeded, increase Heap Size, from /192.168.0.4:54321
10-08 20:13:26.541 192.168.0.4:54321     2125   FJ-0-5    FATAL: Exiting.
10-08 20:13:26.574 192.168.0.4:54321     2125   FJ-0-7    FATAL: Exiting.
10-08 20:13:26.575 192.168.0.4:54321     2125   FJ-0-3    FATAL: Exiting.
10-08 20:13:26.575 192.168.0.4:54321     2125   FJ-0-13   FATAL: Exiting.

我在 h2o Slater (3.2.0.5) 上运行它,因此根据您的版本,这可能会有所不同。

【讨论】:

以上是关于为啥连接终止的主要内容,如果未能解决你的问题,请参考以下文章

为啥 setupterm 会终止程序?

为啥需要空终止符?

为啥 Environment.Exit() 不再终止程序?

为啥我打印素数的代码会提前终止?

为啥 kubectl cp 命令以退出代码 126 终止?

为啥 C 中的字符串需要空终止?