私のサーバーユーザーがWebサーバー操作で "nice"コマンドを使用することを忘れ続けた場合は、開始するすべてのエントリのデフォルトの優先順位がゼロよりわずかに高くなるように設定を変更できますか?
答え1
これは/etc/security/limits.conf
ファイルで実行できます。
ユーザーがグループのメンバーであると仮定すると、users
次の行を追加できます。
@users soft nice 5
答え2
nice
nice-nessは実際に望むツールではないようです。 cgroupsはそうです! (ユーザーnice
自身に頼るのは構造的なミスです。)実際に気づいたように! )
Linuxでは、ユーザー、サービス、モノの「スライス」クォータを提供できます。 CPU 競合が高い場合、nice-ness を使用して特定のプロセスの優先順位を下げるのと似ていますが、より広範には I/O 帯域幅でも機能します。 RAM、プロセス数など、いくつかあります。
これはとても簡単です。ユーザーuid 1234(現在ログインしているスライスが存在する)がnginx HTTPサービスのCPU時間の1/4を取得できないように制限しているとします。
systemctl set-property user-1234.slice CPUShares=500 MemoryHigh=16G
systemctl set-property nginx.service CPUShares=2000 MemoryHigh=28G
(これらの変更は永久的です)
制限したい場合ログインしたすべてのユーザーの合計、使用user.slice
。
特定のユーザーを事前に制限するには、/lib/systemd/system/user-1234.sliceを作成してください。
[Unit]
Description=Goddammit stop hogging my server, Carl
Documentation=man:systemd.special(7)
Before=slices.target
CPUShares=500
MemoryHigh=2G
[Slice]
Slice=user-slice
[Install]
WantedBy=multi-user.target
答え3
私のサーバーユーザーがWebサーバー操作で "nice"コマンドを使用することを忘れ続ける場合
何か間違っているようですね/XY問題です。技術的に単純な「ユーザー」がサーバーの役割のホストへのシェルアクセスを持つことができるのはなぜですか?このシステムで他のプロセスの実行が許可されるのはなぜですか?これらのプロセスにオペレーティングシステムが提供しようとするよりも多くのCPU時間が必要なのはなぜですか?