Wie würden Sie ein ulimit für eine systemd-Serviceeinheit festlegen?
Diese Stackoverflow-Frage erklärt, dass systemd System-Ulimits ignoriert
Wie würde die Syntax aussehen, um die folgenden Ulimits zu setzen?
ulimit -c
ulimit -v
ulimit -m
[Unit]
Description=Apache Solr
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
SOLR_INSTALL_DIR=/opt/solr
SOLR_ENV=/etc/default/solr.in.sh
RUNAS=solr
SOLR_PID_DIR="/var/solr"
SOLR_HOME="/opt/solr/server/solr"
LOG4J_PROPS="/var/solr/log4j.properties"
SOLR_LOGS_DIR="/opt/solr/server/logs"
SOLR_PORT="8389"
PIDFile=/var/solr/solr-8389.pid
ExecStart=/opt/solr/bin/solr start
ExecStatus=/opt/solr/bin/solr status
ExecStop=/opt/solr/bin/solr stop
Restart=on-failure
User=solr
SuccessExitStatus=143 0
[Install]
WantedBy=multi-user.target
man 5 systemd.exec
.Antworten:
Die Zuordnungen von systemd beschränken sich auf ulimit
Wenn ein ulimit auf "unbegrenzt" gesetzt ist, setzen Sie es in der systemd-Konfiguration auf "unendlich"
ulimit -c unlimited
ist dasselbe wieLimitCORE=infinity
ulimit -v unlimited
ist dasselbe wieLimitAS=infinity
ulimit -m unlimited
ist dasselbe wieLimitRSS=infinity
So würde eine endgültige Konfiguration aussehen
In diesem speziellen Fall kenne ich den vollständigen Java-Pfad nicht (da er sich je nach Servertyp ändert), und systemd freut sich nicht über relative Pfade. Ich verpacke den Java-Befehl in ein einfaches Bash-Skript unter
/opt/solr/bin/solr-foo
quelle
RUNAS
undSOLR_ENV
entweder korrigiert oder entfernt werden . Und dann ist da noch der ganze Mist imbin/solr
Shell-Skript, der unter einem Servicemanager völlig unnötig ist.bin/solr
Skript nicht verwendet wird .exec
im Shell-Skript.