CentOS

>

プロセス優先度を上げる

MariaDB のプロセス優先度を引き上げる

環境
CentOS Stream release 9
Apache/2.4.57 (CentOS Stream)
Xserver VPS

むろんシェルから

renice -20 -u mysql

とすれば即時、mysql が管轄するプロセスの優先度を最大に引き上げることができるが、永続的に優先度を設定したい場合は違う方法が必要になる

プロセス優先度を永続的に設定する
その方法として /etc/security/limits.conf の編集が取り沙汰されているようだが、Daemon 系にはまったくもって用を成さないのでユニットファイルでの設定が必要になり、/etc/systemd/system/ユニット名.d/ に override.conf を置きそこに変更値を加える手法が推奨されているようだが、それにあたり非常に悩ましい解説が下記でなされている。

10.6.4. 既存のユニットファイルの変更
元のユニットファイル /usr/lib/systemd/system/ のコピーを /etc/systemd/system/ に作成し、そこで変更を行います。コピーは元のファイルを上書きするため、パッケージの更新で導入される変更は適用されません。この方法は、パッケージの更新とは無関係に永続する重要なユニット変更を行う際に役に立ちます。

Red Hat Customer Portal

つまり、「–full 付きで本体に変更・・・」は嘘である。
「/etc/systemd/system/ に作成されるファイル = 元のユニットファイルのコピー」という解釈で良いなら /etc/systemd/system/ユニット名.d/ に conf ファイルを作成してオーバーライドする手法が推奨されること自体、意味を成さない。

下記コマンド実行で変更したい場所を書き換えれば事足りる

systemctl edit --full mariadb

結論から言ってどちらの方法でも構わない。時間のない人は –full あり、時間のある人は –full なし、ってことで自分なりに解釈した。

「systemctl daemon-reload が自動で行われる」も嘘で、どちらの方法を取るにしろ下記コマンドを実行しなければ変更内容は反映されない

systemctl daemon-reload && systemctl restart mariadb

ユニットファイルをオーバーライドするやり方

nano は肌に合わないので編集用エディタを vi に指定(環境によっては vim)

export EDITOR=vi

設定を加える

systemctl edit mariadb

優先度を最大に(### Lines below this comment will be discarded より上に記述)

[Service]
Nice=-20

:wq Enter で保存
これにより /etc/systemd/system/ に mariadb.service.d/override.conf が自動作成される

反映させる

systemctl daemon-reload && systemctl restart mariadb

WordPress 等の mariadb サービスを使用するサイトにアクセスして top コマンドで NI(nice = 優先度) を確認

top
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1402 root      20   0  190340  11668  10132 S   0.7   0.6   0:16.74 rsyslogd
  20022 mysql      0 -20 1634624 115368  23168 S   0.7   6.4   0:00.16 mariadbd
    629 root      20   0   15432   3944   3328 S   0.3   0.2   0:02.18 saslauthd
    749 root      20   0  256732  17992  11136 S   0.3   1.0   0:11.81 tuned

設定した優先度がきちんと反映されているのを確認