search
他カテゴリ

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
Article registration Article registration
haruki3's icon'
  • haruki3
  • @haruki3
よろしく。文句ばかり言ってまーす。

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

SASUKEオーディションに出た時の話

Taka 2021/01/22
Like token Tip token
35.87 ALIS
Eye catch
トラベル

わら人形を釘で打ち呪う 丑の刻参りは今も存在するのか? 京都最恐の貴船神社奥宮を調べた

こすもす 2021/08/07
Like token Tip token
486.35 ALIS
Eye catch
他カテゴリ

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

nonstop-iida 2020/03/04
Like token Tip token
124.82 ALIS
Eye catch
他カテゴリ

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

ふたひい@web3 2020/05/16
Like token Tip token
114.82 ALIS
Eye catch
トラベル

無料案内所という職業

bansu 2019/06/11
Like token Tip token
84.20 ALIS
Eye catch
ゲーム

【初心者向け】Splinterlandsの遊び方【BCG】

暗号資産ジョシ校生 蟻巣 2021/07/07
Like token Tip token
6.32 ALIS
Eye catch
クリプト

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

CryptoChick 2020/03/07
Like token Tip token
159.32 ALIS
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

大田コウキ 2021/04/06
Like token Tip token
947.13 ALIS
Eye catch
クリプト

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

otakucoin 2021/03/29
Like token Tip token
121.79 ALIS
Eye catch
他カテゴリ

テレビ番組で登録商標が「言えない」のか考察してみる

連獅子 2021/10/09
Like token Tip token
31.20 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

昆布森ちゃん 2021/01/19
Like token Tip token
38.31 ALIS
Eye catch
ビジネス

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

Semapho 2021/09/14
Like token Tip token
16.10 ALIS