Azure Linuxでは、systemdのps出力が大幅に遅れます。

Azure Linuxでは、systemdのps出力が大幅に遅れます。

ps出力で膨大な遅延が発生します。systemd-networkd最初のラインを出力するときに大きな遅延があります()。20到着25秒後すぐに残りを表示します。

$ ps -eaf
. . .
systemd+ 31865     1  0 Jul22 ?        00:00:10 /lib/systemd/systemd-networkd
62583    31891     1  0 Jul22 ?        00:00:12 /lib/systemd/systemd-timesyncd
root     31922     1  0 Jul22 ?        00:02:09 /lib/systemd/systemd-journald
. . .

理由と解決策をご存知ですか?

$ time ps -o uname -p 31891
USER
62583

real    0m25.025s
user    0m0.006s
sys     0m0.006s

$ time getent passwd 62583 | wc
      0       0       0

real    0m25.030s
user    0m0.005s
sys     0m0.001s

$ grep 62583 /etc/passwd | wc 
      0       0       0

$ grep passwd /etc/nsswitch.conf
passwd:         compat systemd

$ grep compat /etc/nsswitch.conf
passwd:         compat systemd
group:          compat systemd
shadow:         compat

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:        18.04
Codename:       bionic

$ uname -rm
5.4.0-1047-azure x86_64

答え1

私の疑いは、ps数値のUIDをユーザー名に変換しようとし、そのUIDを見つけてからタイムアウトすることです。照会が失敗した場合、数値IDが表示されます。

これら2つのコマンドに違いがあることを確認してください。

ps -o uid -p 31891

ps -o uname -p 31891

今、クエリが発生してタイムアウトするのはなぜですか?ユーザー名にNISを設定できますか?あなたは何のためですかgrep passwd /etc/nsswitch.conf?探してみると確認できますが空になりgetent passwd 62583そうです。

修理する:

NIS/NIS+を情報システムとして使用していないと思うなら(これは非常に単一システムでは一般的ではありません)nsswitch.confの行を次のように変更してこの機能をオフにすることができます。

passwd: files

アカウント情報を保存するためにローカルファイル(/ etc / passwd)のみを使用するようにパーサーに指示します。何かが壊れた場合は、もう一度変更できます。

関連情報