他カテゴリ

systemdサービスプロセスのリソース制限値の設定方法; systemd service process resouce limit directives

haruki3's icon'
  • haruki3
  • 2019/03/07 02:45

systemd のサービスとして起動したプロセスのリソース制限値(カーネルパラメタ:プロセス数、ファイルディスクリプタ等の制限値)には"/etc/security/limits.conf"内で設定している制限値が適用されない。(systemdサービスにはPAM Limitが適用されない)

systemd のサービスとして起動したプロセスのリソース制限値は.serviceファイル内で下記ディレクティブを設定する。


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                -


(設定例)

環境:CentOS 7.4

==============================
systemd .serviceファイルのリソース制限設定
resource limitation on systemd .service file 
==============================

以下の"/etc/security/limits.conf"と同等のリソース制限をsystemd serviceに設定する。

---/etc/security/limits.conf----------
usr1 soft nproc unlimited
usr1 hard nproc unlimited
usr1 soft nofile 65536
usr1 hard nofile 65536
---------------------------------------


--- /etc/systemd/system/testApp1.service ------------------------------
# /etc/systemd/system/testApp1.service
[Unit]
Description = Start / Stop test app1 service
#Requires=oracle-rdbms.service
#After=oracle-rdbms.service

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65536
LimitNPROC=infinity
TimeoutSec=300s
Type=forking
Restart=no
User=test1
ExecStartPre= /local0/test/app1/scripts/start-PreServe1.sh
ExecStart = /local0/test/app1/bin/app1control.sh start
ExecReload = /local0/test/app1/bin/app1control.sh restart
ExecStop = /local0/test/app1/bin/app1control.sh stop


[Install]
WantedBy = multi-user.target

--- end of /etc/systemd/system/testApp1.service ------------------------

上記の.serviceファイル内のディレクティブによるリソース制限値はsoft と hard どちらの limit も同時に設定される。


=====================
systemdサービスの反映、実行
=====================

# systemctl daemon-reload;
# systemctl restart testApp1.service;


========================
起動中のプロセスのulimit値の確認
confirm the running process ulimit
========================

# ps -ef | grep app1
test1    1604 1 0 Feb27 ? 00:18:08 /local0/test1/app1/jre/jre1.8.0_144/bin/java -Xmx39G -jar lib/boot.jar -app=lib/module1.jar

$ cat /proc/1604/limits
Limit                            Soft Limit          Hard Limit       Units

Max cpu time               unlimited       unlimited             seconds
Max file size                 unlimited       unlimited             bytes
Max data size               unlimited       unlimited             bytes
Max stack size             8388608         unlimited             bytes
Max core file size         0                    unlimited             bytes
Max resident set          unlimited        unlimited             bytes
Max processes            unlimited       unlimited            processes
Max open files             65536            65536                  files
Max locked memory      65536            65536                   bytes
Max address space       unlimited       unlimited              bytes
Max file locks               unlimited        unlimited              locks
Max pending signals     1032556         1032556                signals
Max msgqueue size      819200           819200                  bytes
Max nice priority           0                    0
Max realtime priority     0                    0
Max realtime timeout    unlimited       unlimited              us

$


リソース制限値が正常に設定されない場合は、"/etc/security/limits.conf" の上限値も同様に変更する。(環境により"/etc/security/limits.conf"の上限値が優先される時がある?よく理解していないです・・・。)


[END]

公開日:2019/03/07
獲得ALIS:17.79
haruki3's icon'
  • haruki3
  • @haruki3
よろしく。文句ばかり言ってまーす。

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

Like token Tip token
125.92 ALIS
Eye catch
クリプト

Bitcoinの価値の源泉は、PoWによる電気代ではなくて"競争原理"だった。

Like token Tip token
159.32 ALIS
Eye catch
他カテゴリ

機械学習を体験してみよう!(難易度低)

Like token Tip token
124.82 ALIS
Eye catch
ビジネス

海外企業と契約するフリーランス広報になった経緯をセルフインタビューで明かす!

Like token Tip token
16.10 ALIS
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

Like token Tip token
125.92 ALIS
Eye catch
グルメ

バターをつくってみた

Like token Tip token
127.90 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

Like token Tip token
121.79 ALIS
Eye catch
他カテゴリ

オランダ人が語る大麻大国のオランダ

Like token Tip token
46.20 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

Like token Tip token
46.60 ALIS
Eye catch
他カテゴリ

京都のきーひん、神戸のこーへん

Like token Tip token
12.10 ALIS
Eye catch
トラベル

無料案内所という職業

Like token Tip token
84.20 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
161.20 ALIS