全局将 ulimit 设置为 unlimited 可能存在哪些问题?

全局将 ulimit 设置为 unlimited 可能存在哪些问题?

我的团队最近遇到了一个问题,Apache 服务器上的 ulimit 设置得太低。我们讨论过将限制增加到某个任意数字,但我们想不出任何理由不将其全局设置为无限制。

有什么好的理由不这样做吗?

我们意识到可能会使用更多的资源,但处理资源使用情况可能比应用程序崩溃或“超出 fd”问题更容易。

答案1

ulimit是一个在 Linux 系统上设置各种限制的接口,而不仅仅是打开文件描述符的限制:

~# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 20
file size               (blocks, -f) unlimited
pending signals                 (-i) 16382
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

您实际上需要对资源设置限制的原因是资源是有限的。设置限制基本上可以保护您的系统免于无响应,但代价是限制特定用户。即使您只需要关注一个应用程序,您仍然需要确保它不会使系统停止运行,这样您甚至无法通过 SSH 登录来解决问题。

在打开文件描述符的特定情况下,使用 select() 或 poll() 调用的异步操作的开销如果文件描述符表太大,则会显著增加(这在通常情况下不会发生,但如果您的某个进程手柄漏水)这将损害整个系统异步I/O的整体性能。

相关内容