실행 중인 프로세스의 한계를 보면
Max pending signals 15725
- 이건 뭐죠?
- 바쁜 서비스에 대한 합리적인 가치를 결정하는 방법은 무엇입니까?
일반적으로 각 한도가 무엇인지 설명하는 페이지를 찾을 수 없는 것 같습니다. 일부는 매우 자명하며(열린 파일의 최대 수), 일부는 덜 명확합니다(최대 메시지 대기열 크기).
답변1
~에 따르면매뉴얼 페이지의 sigpending
:
sigpending()은 호출 스레드에 전달되기를 기다리는 신호 세트(즉, 차단하는 동안 발생한 신호)를 반환합니다.
D
따라서 이는 프로세스 종료(무중단 절전) 상태에서 신호(sigterm, sigkill, sigstop...)를 기다리는 것을 의미합니다 . 일반적으로 프로세스는 I/O를 기다리는 동안 이 상태에 있습니다. 수면은 방해받을 수 없습니다. sigkill( kill -9
)도 할 수 없지만 커널은 프로세스가 깨어날 때까지 기다립니다(신호는 그만큼 오랫동안 전달될 때까지 기다립니다).
다른 불분명한 값에 대해서는 다음을 살펴보겠습니다.매뉴얼 페이지의 limits.conf
.
답변2
프로세스 제한은 setrlimit(2)에 의해 제어됩니다.
따라서 맨페이지를 확인할 수 있습니다.
RLIMIT_SIGPENDING(리눅스 2.6.8부터)
호출 프로세스의 실제 사용자 ID에 대해 대기할 수 있는 신호 수에 대한 제한을 지정합니다. 이 제한을 확인하기 위해 표준 신호와 실시간 신호가 모두 계산됩니다. 그러나 이 제한은 sigqueue(3)에만 적용됩니다. 프로세스에 아직 대기열에 추가되지 않은 신호의 인스턴스를 대기열에 추가하려면 언제든지 kill(2)을 사용할 수 있습니다.
일반적으로 시스템 호출에 대한 매뉴얼 페이지를 보면 가장 자세한 정보를 얻을 수 있습니다. C는 UNIX/Linux의 모국어입니다.