리소스가 부족한 사용자 - 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의 설정은 포크 폭탄을 방지하기 위한 것 같습니다. 적어도 해당 파일 사본의 주석에는 그렇게 나와 있습니다.

/etc/ssh/sshd_config, 특히 "MaxStartUps" 값을 살펴보세요. 1000으로 늘려보세요. 차이가 없다면 /etc/security/limits.conf에서 최대 사용자 프로세스 값을 늘리는 것이 어떨까요? 제가 관리하는 서버에서는 65535로 설정되어 있습니다.

관련 정보