시스템 서비스 수동 재시작 속도 제한

시스템 서비스 수동 재시작 속도 제한

서비스(예: nginx)가 때때로 'systemd restart nginx'에 의해 과도하게 다시 시작되는 시스템이 있습니다(예: 새 구성을 적용하거나 로그를 회전하기 위해 다른 스크립트의 결과로).

이런 식으로 서비스를 "수동으로" 다시 시작하더라도 systemd는 다시 시작 비율 제한으로 인해 실패합니다. 또한 특정 순간에 nginx를 10번 다시 시작하는 것도 유용하지 않습니다.

그렇다면 서비스 수동 재시작 속도를 제한하는 방법은 무엇입니까? 수동 재시작 요청에도 적용되는 재시작 휴지 같은 것이 있습니까? 일반적인 설정은 모두 systemd에 의한 자동 재시작에 적용되는 것 같습니다.

답변1

StartLimitIntervalSec및 를 사용하여 이를 달성할 수 있습니다 StartLimitBurst.

시스템 장치 매뉴얼 페이지에서:

StartLimitIntervalSec=간격, StartLimitBurst=버스트

장치 시작 속도 제한을 구성합니다. 간격 시간 범위 내에서 버스트 시간보다 더 많이 시작된 장치는 더 이상 시작할 수 없습니다. StartLimitIntervalSec=를 사용하여 확인 간격을 구성하고 StartLimitBurst=를 사용하여 간격당 허용되는 시작 횟수를 구성합니다.

간격은 기본 단위인 초를 사용하는 시간 범위이지만 다른 단위를 지정할 수도 있습니다. systemd.time(5)을 참조하세요. 기본값은 관리자 구성 파일에서 DefaultStartLimitIntervalSec=이며, 모든 종류의 속도 제한을 비활성화하려면 0으로 설정될 수 있습니다. 버스트는 숫자이며 기본값은 관리자 구성 파일의 DefaultStartLimitBurst=입니다.

이러한 구성 옵션은 서비스 설정 Restart=(systemd.service(5) 참조)와 함께 특히 유용합니다. 그러나 이는 Restart= 논리에 의해 트리거된 시작뿐만 아니라 모든 종류의 시작(수동 포함)에 적용됩니다.

Restart=로 구성되고 시작 한계에 도달한 장치는 더 이상 재시작을 시도하지 않습니다. 그러나 간격이 지난 후에도 수동으로 다시 시작하거나 나중에 타이머나 소켓에서 다시 시작할 수 있습니다. 그 시점부터 다시 시작 논리가 다시 활성화됩니다. systemctl Reset-failed는 서비스의 재시작 속도 카운터를 플러시하게 합니다. 이는 관리자가 장치를 수동으로 시작하려고 하는데 시작 제한이 이를 방해하는 경우에 유용합니다. 속도 제한은 장치 조건 확인이 실행된 후에 시행되므로 조건이 실패한 장치 활성화는 속도 제한에 포함되지 않습니다.

답변2

어떤 운영 체제 릴리스를 사용하고 있습니까? Linux 배포판의 저장소를 사용하여 nginx 패키지를 설치했습니까, 아니면 소스 코드에서 설치했습니까?

아마도 이러한 질문에 대한 답변은 문제를 해결하는 데 필요한 가능한 경로를 결정하는 데 도움이 될 수 있습니다.

관련 정보