
내 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로 설정되어 있습니다.