当我通过shell启动一个具有高内存使用率(“-Xmx52g”)的Java程序时,一切正常。但是,如果我通过CRON使用相同的命令和相同的用户启动相同的程序,几秒钟后我会得到一个java.lang.OutOfMemoryError。使用CRON但不使用SHELL的OOM
此外,只要我不杀死被阻止的java程序,CRON就无法做任何事情。不管哪个cronjob应该启动,它总是以syslog中的“(CRON)错误(无法分叉)”结束。杀死Java程序后,所有新的cronjob都能正常工作。
这个问题只发生在Ubuntu 16.04上,所有旧版本都运行良好。这是一个错误还是一个新的安全功能?我没有找到关于这个问题的任何信息,所以我希望任何人都可以提供帮助。
听起来像cron的具有自身及其衍生孩子之间的共享内存限制......也许cgroup中限制吗? – davmac
我想你可能是对的。但是,这是一个错误还是我可以/必须解决的问题?我使用一个普通的16.04 Ubuntu服务器镜像,没有任何定制。 – DOB
嗯,可能会建立一个限制来防止失控的cron作业取消系统。至于如何配置这个限制,我不确定是否有系统特定的工具或配置文件。可能你应该问服务器错误,因为这不是一个编程问题,并且实际上是堆栈交换的主题。 – davmac