애플리케이션 계정에 대해 Unix 관리자 에 의해 활성화된 후 systemd --user
다음 서비스 템플릿을 만들었습니다(알고 있듯이 자체적으로 Ansible 템플릿에서 처음 생성되었습니다. 왜냐하면 RHEL7의 systemd-version은 아직 이를 이해하지 못하기 때문입니다 %H
).
[Unit]
Description=%i Secondary Services
[Install]
WantedBy=default.target
[Service]
WorkingDirectory=%h/apps/%i
{% set ICODE = ansible_hostname | upper %}
ExecStartPre=test -d %h/apps/%i/adco/datafiles
ExecStart=/bin/bash ./launchapp /INSTALLATION_CODE:{{ ICODE }}
ExecStop=/bin/bash ./launchapp /INSTALLATION_CODE:{{ ICODE }} -k
Type=forking
PIDFile=%h/apps/%i/logs/{{ ICODE }}.pid
Restart=always
RestartSec=7
StartLimitBurst=0
Nice=7
TimeoutSec=3593
이를 사용하여 우리는 공유 서버에 있는 애플리케이션의 각 인스턴스마다 하나씩 여러 서비스를 생성할 수 있었습니다. 이 작업은 지난주 운영체제 패치가 나올 때까지 약 두 달간 진행됐다.
패치 후에는 패치가 적용된 모든 시스템에서 서비스가 지속적으로 다시 시작됩니다. 애플리케이션에 문제가 있어서가 아니라(변경 없음) 프로세스 systemd --user
자체가 다시 시작되었기 때문입니다.
우리 Unix 지원 직원은 이해하려고 노력합니다.왜그리고 그렇게 할 수 없습니다. 로그에 기록되는 것은 모두 "재부팅"뿐입니다(RHEL은 단지 /var/log/messages
인간이 읽을 수 없으며 루트가 필요함).
그들이 무슨 일이 일어나고 있는지 이해하려고 노력하는 동안 나는 그 Type=forking
줄을 주석 처리했습니다. 그리고 다시 시작이 중단되었습니다! systemctl --user status
모든 서비스 나열: systemd --user
템플릿의 여러 인스턴스를 아래에서 위로 나열합니다.
질문:
systemd --user
계속해서 재부팅하는 것, 우리 자신에게 무슨 문제가 있을 수 있을까요 ? 실행된 애플리케이션은 리소스 집약적이어서 약 40개의 대규모 프로세스를 실행했습니다. 하지만 이전에는 이런 문제가 발생하지 않았습니다. 어쩌면 시작되는 프로세스 수에 제한이 있습니까systemd --user
? 아니면 총 메모리 사용량인가요? 그렇다면 왜 우리는 이전에 공격하지 않았습니까?Type
주석 처리가 -line 도움이 되는 이유는 무엇 입니까?systemd
주 프로세스(PID가 PID 파일에 기록됨)가 사라지는 경우 이를 주석 처리하는 데 드는 비용은 얼마입니까? 예를 들어 여전히 눈에 띌 수 있습니까? 재부팅 시에도 애플리케이션 인스턴스가 시작됩니까?