首页 > 解决方案 > 如果我更改生产服务器上的 ulimit 值,它会破坏已经在服务器上运行的现有进程吗?

问题描述

我们需要更改生产服务器上的 ulimit 值,因为当前配置的值不符合要求。但是,已经有很多 java 进程在服务器上运行,我们不想破坏它们中的任何一个。

我们可以即时更改生产服务器上的 ulimit 值吗?

这适用于 Red Hat Enterprise Linux Server 6.6 版(圣地亚哥)

标签: linuxproduction-environment

解决方案


进程从其父进程继承资源限制。内置的 shellulimit改变了 shell 自己的资源限制,从而改变了它未来 children的资源限制。更改 in 的值limits.conf将更改未来登录 shell 的资源限制,从而更改其 children的资源限制。两者都不会改变已经运行的进程的限制。

当然,已经运行的进程可能会觉得其他进程越来越需要资源。例如,这可能会使它们更快地耗尽内存。

要获取或设置已运行进程的资源限制,较新的 linux 具有prlimit 命令。例如,要更改nproc正在运行的进程的限制:

prlimit --pid $MY_SERVER_PID --nproc=unlimited

推荐阅读