在运行代码时,我很难摆脱CStack限制。我设法通过附加来消除这个错误
* hard stack unlimited
* soft stack unlimited
* soft memlock unlimited
* hard memlock unlimited
root soft stack unlimited
root hard stack unlimited
root soft memlock unlimited
root hard memlock unlimited
CCD_ 1修复了RStudio Desktop上的问题。
运行Cstack_info((得到以下输出
> Cstack_info()
size current direction eval_depth
NA NA 1 2
这是桌面终端上ulimit -s
的输出
coolshades@coolshades-ws:~$ ulimit -s
unlimited
代码在RStudio Desktop上完美运行。
在同一台机器上,我还运行RStudio服务器(免费(远程运行代码。在运行RStudio Server时,这些设置似乎不会一直存在。
这是RStudio服务器上Cstack_info((的输出
> Cstack_info()
size current direction eval_depth
7969177 26336 1 2
这是RStudio服务器上终端的ulimit
输出
coolshades@coolshades-ws:~$ ulimit -s
8192
我可以使用ulimit -s unlimited
将限制更改回无限制。但它只有在Rsession重新启动后才会生效。然而,当我重新启动R会话时,ulimit -s
的输出返回到8192。
我不知道如何最好地解决这个问题,希望一个更有经验的RStudio服务器用户能够就此事提供建议。
我已经解决了这个问题。
我不得不对以下文件进行以下更改:
sudo nano /etc/systemd/user.conf
添加DefaultLimitSTACK=134217728
sudo nano /etc/systemd/system.conf
添加DefaultLimitSTACK=134217728
确保你定义的数字是2的幂,否则Ubuntu会因为某种原因无法登录。
我有128GB的RAM。所以我把我的限制设置为2^27。
希望这能帮助到有同样问题的人。
DefaultLimitSTACK=134217728似乎得到了128MB的RAM,而不是128GB的RAM,如R中的系统("ulimit-s"(所示。DefaultLimit斯塔克似乎以字节为输入单位。
然而,DefaultLimitSTACK的更改是更改R studio服务器c堆栈使用限制的关键。
不要忘记重新启动计算机,因为更改是系统级别,而不是用户级别或Rstudio服务器级别。