시스템 인스턴스화 서비스의 다양한 인스턴스에 대해 서로 다른 리소스 제한을 지정하는 방법은 무엇입니까?

시스템 인스턴스화 서비스의 다양한 인스턴스에 대해 서로 다른 리소스 제한을 지정하는 방법은 무엇입니까?

급여 등급 이상의 이유로 베어메탈 OS가 있는 물리적 호스트에서 DB 서버의 여러 인스턴스를 실행해야 합니다. 또한 각 인스턴스의 물리적 메모리 사용을 제한해야 합니다.

수십 개의 인스턴스를 시작하기 위해 템플릿 단위 파일을 사용하고 있습니다. EnvironmentFile각 인스턴스에 대해 서로 다른 환경 변수와 명령줄 인수를 지정하는 데 사용하고 있습니다 .

그러나 각 인스턴스에 대해 서로 다른 메모리 제한을 지정할 수도 있기를 원합니다. AFAICT, 환경 변수 대체는 MemoryHigh.

나는 드롭인 파일이 답이 될 것이라고 생각했지만, 인스턴스화된 서비스에서 드롭인 파일을 사용하는 단 하나의 예도 찾을 수 없었습니다. 에 대한 하나의 드롭인 파일 myservice@1, 에 대한 다른 드롭인 파일 등을 만들 수 있는 방법이 있습니까 myservice@2?

$ cat /etc/systemd/system/[email protected]

[Unit]
Description=Something
After=syslog.target network.target

[Service]
Type=forking    
EnvironmentFile=/etc/myservice/myservice.%i.env
ExecStart=/usr/bin/myservice $OPTIONS_FROM_ENV
MemoryHigh=4G

[Install]
WantedBy=multi-user.target

답변1

이 답변에서 내가 찾고 있는 것을 찾은 것 같습니다.https://serverfault.com/a/879705/62991

인스턴스 이름으로 드롭인 디렉터리를 생성하면 인스턴스화되지 않은 서비스와 마찬가지로 설정을 재정의할 수 있습니다.

아래 예에서 인스턴스에는 myservice기본적으로 4GiB 메모리 제한이 있지만 자체 설정 myservice@1도 있습니다. myservice@2Fedora 25의 systemd 231에서는 잘 작동합니다.

$ cat /etc/systemd/system/[email protected]
[Unit]
Description=Something
After=syslog.target network.target

[Service]
Type=forking    
EnvironmentFile=/etc/myservice/myservice.%i.env
ExecStart=/usr/bin/myservice $OPTIONS_FROM_ENV
MemoryHigh=4G

[Install]
WantedBy=multi-user.target

$ cat /etc/systemd/system/[email protected]/99-memory.conf
[Service]
MemoryHigh=10G

$ cat /etc/systemd/system/[email protected]/99-memory.conf
[Service]
MemoryHigh=20G

관련 정보