대기 중인 신호란 무엇입니까?

대기 중인 신호란 무엇입니까?

실행 중인 프로세스의 한계를 보면

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의 모국어입니다.

관련 정보