Comment définiriez-vous un ulimit sur une unité de service systemd?
Cette question de stackoverflow explique que systemd ignore les ulimits système
À quoi ressemblerait la syntaxe pour définir les ulimits suivants?
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
.Réponses:
Les mappages des limites de systemd à ulimit
Si un ulimit est défini sur «illimité», définissez-le sur «infini» dans la configuration systemd
ulimit -c unlimited
est le même queLimitCORE=infinity
ulimit -v unlimited
le même queLimitAS=infinity
ulimit -m unlimited
le même queLimitRSS=infinity
Donc, une configuration finale ressemblerait à
Dans ce cas particulier, je ne connais pas le chemin java complet (car il change en fonction du type de serveur), et systemd n'est pas satisfait des chemins relatifs, j'encapsule la commande java dans un simple script bash situé à
/opt/solr/bin/solr-foo
la source
RUNAS
etSOLR_ENV
corrigés ou supprimés. Et puis il y a tout le hooplah dans lebin/solr
script shell qui est complètement inutile sous un gestionnaire de services.bin/solr
script gonflé .exec
dans le script shell.