¿Cómo establecería un ulimit en una unidad de servicio systemd?
Esta pregunta de stackoverflow explica que systemd ignora los límites del sistema
¿Cómo sería la sintaxis para establecer los siguientes límites?
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
.Respuestas:
Las asignaciones de límites systemd a ulimit
Si un ulimit se establece en 'ilimitado' configúrelo en 'infinito' en la configuración del sistema
ulimit -c unlimited
es lo mismo queLimitCORE=infinity
ulimit -v unlimited
es lo mismo queLimitAS=infinity
ulimit -m unlimited
es lo mismo queLimitRSS=infinity
Entonces una configuración final se vería así
En este caso en particular, no conozco la ruta completa de Java (ya que cambia según el tipo de servidor), y systemd no está contento con las rutas relativas, envuelvo el comando Java en un simple script bash ubicado en
/opt/solr/bin/solr-foo
fuente
RUNAS
ySOLR_ENV
sea corregida o quitada. Y luego está todo el alboroto en elbin/solr
script de shell que es completamente innecesario bajo un administrador de servicios.bin/solr
script hinchado .exec
en el script de shell.