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가 표시됩니다.

이 두 명령에 차이점이 있는지 확인하세요.

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)만 사용하도록 파서에 지시합니다. 뭔가 깨진 경우 다시 변경할 수 있습니다.

관련 정보