用户资源不足-centos

用户资源不足-centos

我的 centos 盒子开始表现得很奇怪,ssh 日志显示:

pam_unix(sshd:session): session opened for user trading by (uid=0)
fatal: setresuid 502: Resource temporarily unavailable

在我的 cron 日志中(针对同一用户),我遇到了失败

(CRON) ERROR (setreuid failed): Resource temporarily unavailable

以该用户身份执行 ulimit -a:

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

并且 limits.d 90-nproc.conf 具有:

*          soft    nproc     1024
root       soft    nproc     unlimited

但是当我使用时,该用户似乎从未获得超过~20 个进程ps -eo user=|sort|uniq -c,但是我没有检查发生故障时的确切进程数。

我们在该机器上有少量 Java 服务,由同一用户运行。但似乎进程用完了?我们在该机器上还有 Postgres,但以不同的用户身份运行。

有什么建议吗?是否由于 1024 的限制而耗尽进程(发生故障时必定会爆发?),还是我达到了不同的资源限制。

此外,当我查看/proc/{myprocid}/limits

Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            10485760             unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             1024                 773824               processes
Max open files            100000               100000               files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       773824               773824               signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

为什么一个进程有最大进程数?

答案1

90-nproc.conf 中的设置似乎是为了防止 fork 炸弹 —— 至少我所复制的该文件中的注释是这么说的。

查看 /etc/ssh/sshd_config,特别是“MaxStartUps”的值。尝试将其增加到 1000。如果这没有区别,为什么不增加 /etc/security/limits.conf 中的最大用户进程数的值?在我管理的服务器中,它们设置为 65535。

相关内容