r - 在 Shiny 的服务器上增加堆栈维度

我在一个 Shiny 的服务器上工作,我正在做一些非常复杂的操作。 我发现的问题是,在处理大型数据帧几分钟后,应用程序因以下错误而崩溃: 错误:C 堆栈使用 7969194 太接近限制。执行暂停。 我在谷歌上搜索了一下,发现在 ubuntu 的 cmd 中使用此命令 ulimit -s 16384 可以增加堆栈大小,但我没有找到如何在 Shiny 的服务器中执行此操作。

拜托,有人有什么想法吗?

谢谢

最佳答案

TLDR:

将以下行添加到 /etc/security/limits.conf 的末尾:

* soft memlock unlimited
* hard memlock unlimited

* soft stack unlimited
* hard stack unlimited

记入this answer .基本上,此更改会将堆栈和 memlock 内存的大小调整为无限。

更多背景:

正如 OP 指出的那样,可以使用 ulimit在进入 R session 之前调整可用堆栈大小。

R 包 rlimit应该像命令行实用程序 ulimit 一样工作,但是,在进入 R session 后我无法产生相同的行为:

Cstack_info()["size"] # prints 7969177
rlimit_stack(16384, 16384) # expect 16777216
Cstack_info()["size"] # still prints 7969177

最终我找到了上面的 TLDR 解决方案和 Error: C stack usage 7969194 is too close to the limit.执行停止。 消失。

https://stackoverflow.com/questions/60492048/

相关文章:

angular - 从 Nebular NbTreeGridComponent 更改列的宽度

node.js - 如何 catch 与编剧的下载?

php - html2pdf: 生成一个空白页

python - 如何将张量转换为字符串

c++ - 如何修复 trompeloeil 中的 "RETURN missing for non-

flutter - 是否可以通过 UDP/TCP 从 flutter 应用程序向 .NET 应用程序

php - 找不到类放大器

amazon-web-services - 如何在不破坏池的情况下使 Cognito 用户池电子邮件

javascript - Firebase:使用预留主机 URL 时未创建 Firebase 应用程

ios - 为什么 Mac Catalyst 应用程序不使用 numberOfTouchesRequ