Ulmits sistemi systemd ile nasıl kurarım?


29

Sistem servis biriminde ulimit nasıl belirlenir?

Bu yığın akışı sorusu, systemd'nin sistem ulimitlerini yok saydığını açıklıyor

Sözdizimi aşağıdaki ulimitsleri ayarlamak için nasıl görünür?

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

1
İçin "Sınır" arayın man 5 systemd.exec.
Totor,

Yanıtlar:


58

Sistemin eşleşmesi ulimit ile sınırlıdır

Directive        ulimit equivalent     Unit
LimitCPU=        ulimit -t             Seconds      
LimitFSIZE=      ulimit -f             Bytes
LimitDATA=       ulimit -d             Bytes
LimitSTACK=      ulimit -s             Bytes
LimitCORE=       ulimit -c             Bytes
LimitRSS=        ulimit -m             Bytes
LimitNOFILE=     ulimit -n             Number of File Descriptors 
LimitAS=         ulimit -v             Bytes
LimitNPROC=      ulimit -u             Number of Processes 
LimitMEMLOCK=    ulimit -l             Bytes
LimitLOCKS=      ulimit -x             Number of Locks 
LimitSIGPENDING= ulimit -i             Number of Queued Signals 
LimitMSGQUEUE=   ulimit -q             Bytes
LimitNICE=       ulimit -e             Nice Level 
LimitRTPRIO=     ulimit -r             Realtime Priority  
LimitRTTIME=     No equivalent

Bir ulimit 'sınırsız' olarak ayarlanmışsa, systemd config içinde 'sonsuz' olarak ayarlayın

ulimit -c unlimitedaynı LimitCORE=infinity
ulimit -v unlimitedaynı olduğu LimitAS=infinity
ulimit -m unlimitedgibiLimitRSS=infinity

Yani son bir yapılandırma gibi görünecek

[Unit]
Description=Apache Solr
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
WorkingDirectory=/opt/solr/server
User=solr
Group=solr
LimitAS=infinity
LimitRSS=infinity
LimitCORE=infinity
LimitNOFILE=65536
ExecStart=/opt/solr/bin/solr-foo
Restart=on-failure
SuccessExitStatus=143 0
SyslogIdentifier=solr


[Install]
WantedBy=multi-user.target

Bu özel durumda, tam java yolunu bilmiyorum (sunucu türüne göre değiştiğinden) ve systemd göreli yollardan memnun değil, java komutunu bulunan basit bir bash betiğine sardım. /opt/solr/bin/solr-foo

#!/bin/bash

. /opt/solr/bin/solr.in.sh

# Load $JAVA_HOME from 1 of 2 places where it could be defined
# Last one wins
if [[ -f "/etc/profile.d/jdk.sh" ]]; then
  . /etc/profile.d/jdk.sh
fi

if [[ -f "/etc/profile.d/zing.sh" ]]; then
  . /etc/profile.d/zing.sh
fi

exec ${JAVA_HOME}/bin/java -server \
  -Djetty.port=${SOLR_PORT} \
  ${SOLR_JAVA_MEM} \
  ${GC_TUNE} \
  ${GC_LOG_OPTS} \
  -DzkClientTimeout=${ZK_CLIENT_TIMEOUT} \
  -DzkHost=${ZK_HOST} \
  -DSTOP.PORT=7900 \
  -DSTOP.KEY=foobar \
  -Dhost=${SOLR_HOST} \
  -Duser.timezone=${SOLR_TIMEZONE} \
  -Djetty.home=/opt/solr/server \
  -Dsolr.solr.home=${SOLR_HOME} \
  -Dsolr.install.dir=/opt/solr \
  -Dlog4j.configuration=file:/var/solr/log4j.properties \
  -Xss256k \
  -Dbootstrap_conf=true \
  -Dbootstrap_confdir=/opt/solr/server/solr/configsets/foobar/conf \
  -Dcollection.configName=foobar \
  -jar start.jar --module=http

Buna "final" demezdim. Hala gibilerin berbat tüm ayarları ihtiyacı RUNASve SOLR_ENVdüzeltilmesini veya kaldırılmasını ya. Ve sonra bin/solrkabuk betiğinde, bir servis yöneticisi altında tamamen gereksiz olan tüm hooplah'lar var .
JdeBP

Gösterdiğin için teşekkürler. Yanıtı, tüm değişkenleri 1 konuma yerleştiren ve şişirilmiş bin/solrkomut dosyasını kullanmayan daha temiz bir çözümle güncelleştirdim .
spuder

Shell betiğinde kullanmaya başlayarak hala düzeltilebilecek daha fazla şey için unix.stackexchange.com/a/320319/5132 adresine bakın exec.
JdeBP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.