সিস্টেমেড দিয়ে কীভাবে উলিমিট সেট করবেন?


29

আপনি কীভাবে একটি সিস্টেমড সার্ভিস ইউনিটে একটি উলিমিট সেট করবেন?

এই স্ট্যাকওভারফ্লো প্রশ্নটি ব্যাখ্যা করে যে সিস্টেমড সিস্টেমের ulimits উপেক্ষা করে

সিনট্যাক্সটি নিম্নলিখিত ulimits সেট করতে কেমন লাগবে?

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
"সীমাবদ্ধতা" এর জন্য অনুসন্ধান করুন man 5 systemd.exec
টোটার

উত্তর:


58

সিস্টেমযুক্ত ম্যাপিংগুলি সীমাবদ্ধতা থেকে সীমাবদ্ধ

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

যদি কোনও ইউলিমিটকে 'সীমাহীন' এ সেট করা হয় তবে এটি সিস্টেমযুক্ত কনফিগারেশনে 'অনন্ত' সেট করে

ulimit -c unlimitedএকই হিসাবে LimitCORE=infinity
ulimit -v unlimitedএকই হিসাবে LimitAS=infinity
ulimit -m unlimitedএকই হয়LimitRSS=infinity

সুতরাং একটি চূড়ান্ত কনফিগার মত দেখতে হবে

[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

এই বিশেষ ক্ষেত্রে, আমি পুরো জাভা পাথ জানি না (যেহেতু এটি সার্ভারের ধরণের ভিত্তিতে পরিবর্তিত হয়), এবং সিস্টেমেড আপেক্ষিক পাথ সম্পর্কে খুশি নয়, আমি জাভা কমান্ডটি একটি সরল বাশ স্ক্রিপ্টে আবৃত করছি at /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

আমি এটিকে "চূড়ান্ত" বলব না। এটি এখনও সেই সমস্ত গণ্ডগোলিত সেটিংসের মতো RUNASএবং SOLR_ENVসংশোধিত বা সরানো দরকার। এবং তারপরে bin/solrশেল স্ক্রিপ্টে হুপলাহের সমস্ত রয়েছে যা কোনও পরিষেবা পরিচালকের অধীনে সম্পূর্ণ অপ্রয়োজনীয়।
জেডিবিপি

যে ইশারা জন্য ধন্যবাদ। আমি একটি ক্লিনার সমাধান সহ উত্তরটি আপডেট করেছি যা সমস্ত ভেরিয়েবলগুলিকে 1 স্থানে রাখে এবং ফুলে যাওয়া bin/solrস্ক্রিপ্টটি ব্যবহার করে না ।
স্পুডার

শেল স্ক্রিপ্টের সাহায্যে শুরু করে আরও কিছু যা স্থির করা যায় তার জন্য unix.stackexchange.com/a/320319/5132 দেখুন exec
জেডিবিপি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.