私のサーバーの1つに断続的な問題があり、ログインに約15秒かかります。これは、rootではなく私のユーザーとしてSSHを介して行われます。
もう一度ログインすると「sudo su」に数十秒かかることもある。
最後に、rootではなく私のユーザーとして "systemctl --user"を実行して、要求に応じて問題を再現できることを確認しました。
これが発生すると、systemdプロセスのCPU使用率が100%に上昇することがわかります。
# in htop
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
206136 todd 20 0 53680 46120 8656 R 99.0 1.2 6h10:06 /usr/lib/systemd/systemd --user
で全体のプロセスを見ることができますが、strace
実際に目立つものはないか、電話を切る/履歴書に関連しているようではありません。私はこれをたくさん見ています。したがって、一部のデータ構造を再割り当て/再配置することもあります。
brk(0x5607dc128000) = 0x5607dc128000
brk(0x5607dc149000) = 0x5607dc149000
また、完了せずにタイムアウトする場合もあります。
0 % [via 192.168.99.8] systemctl --user
Failed to list units: Connection timed out
問題をデバッグ/識別するにはどうすればよいですか?
1 % [via 192.168.99.8] uname -a
Linux bifrost 5.19.10-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 20 Sep 2022 15:17:59 +0000 x86_64 GNU/Linux
0 % [via 192.168.99.8] pacman -Q systemd
systemd 251.4-1
別の詳細 - 私はこの問題を数ヶ月間見続けてきました。コンピュータを再起動しても数日以内に問題が再び発生しないことがわかります。
編集:strace -r
相対タイムスタンプを表示すると、犯人を見つけたようです。
0.000128 getrandom("\xeb\x49\xb5\x3d\x37\x5a\xc4\xd6\x59\x2e\x5c\x5c\x8a\x5a\x35\xfd", 16, GRND_INSECURE) = 16
0.000141 getrandom("\x04\xa7\xa1\xa9\xe4\xbb\x5c\x2c\xa3\x42\x0c\xf8\x36\xd7\x43\x7d", 16, GRND_INSECURE) = 16
16.183344 newfstatat(AT_FDCWD, "/dev/disk/by-diskseq/19565", {st_mode=S_IFBLK|0660, st_rdev=makedev(0x8, 0x10), ...}, 0) = 0
0.000389 newfstatat(AT_FDCWD, "/dev/disk/by-id/usb-Generic-_SD_MMC_MS_PRO_20120926571200000-0:0", {st_mode=S_IFBLK|0660, st_rdev=makedev(0x8, 0x10), ...}, 0) = 0
fstatat("/dev/disk/by-diskseq/19565")
しかし、なぜこのように長い時間がかかるのかわかりません。
システムにディスクが1つしかありません。によるとsmartctl -a /dev/sda
、エラーはなく、
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 47363
SMART Error Log Version: 0
No Errors Logged
これは約5.5年の稼働時間に相当します。
編集2:
誰かが/dev/disk/by-diskseqシンボリックリンクについて質問しました。私は彼らが/ dev / sdaを指すと仮定しましたが、そうではありません。
0 % ls -alhi /dev/disk/by-diskseq/
159385 lrwxrwxrwx 1 root root 9 Oct 6 11:45 39685 -> ../../sdb
シンボリックリンク名(39685)は1分ごとに1ずつ増加するようです。どうやらsdb
私が知らない何かがあるようです。
0 % lsblk -ap
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
/dev/sda 8:0 0 111.8G 0 disk
├─/dev/sda1 8:1 0 487M 0 part /boot
└─/dev/sda2 8:2 0 111.3G 0 part /
/dev/sdb 8:16 1 0B 0 disk
0 % fdisk -l /dev/sdb
fdisk: cannot open /dev/sdb: No medium found
ああ、USBデバイスだと思いますか?ただし、USBスロットには何も接続されていません。
% udevadm info /dev/sdb
P: /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.1/1-5.1:1.0/host2/target2:0:0/2:0:0:0/block/sdb
M: sdb
U: block
T: disk
D: b 8:16
N: sdb
L: 0
S: disk/by-diskseq/39699
S: disk/by-path/pci-0000:00:14.0-usb-0:5.1:1.0-scsi-0:0:0:0
S: disk/by-id/usb-Generic-_SD_MMC_MS_PRO_20120926571200000-0:0
Q: 39699
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.1/1-5.1:1.0/host2/target2:0:0/2:0:0:0/block/sdb
E: DEVNAME=/dev/sdb
E: DEVTYPE=disk
E: DISKSEQ=39699
E: MAJOR=8
E: MINOR=16
E: SUBSYSTEM=block
E: USEC_INITIALIZED=4178478
E: ID_VENDOR=Generic-
E: ID_VENDOR_ENC=Generic-
E: ID_VENDOR_ID=0bda
E: ID_MODEL=SD_MMC_MS_PRO
E: ID_MODEL_ENC=SD\x2fMMC\x2fMS\x20PRO\x20\x20\x20
E: ID_MODEL_ID=0153
E: ID_REVISION=1.00
E: ID_SERIAL=Generic-_SD_MMC_MS_PRO_20120926571200000-0:0
E: ID_SERIAL_SHORT=20120926571200000
E: ID_TYPE=disk
E: ID_INSTANCE=0:0
E: ID_BUS=usb
E: ID_USB_INTERFACES=:080650:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=ums-realtek
E: ID_PATH=pci-0000:00:14.0-usb-0:5.1:1.0-scsi-0:0:0:0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_5_1_1_0-scsi-0_0_0_0
E: DEVLINKS=/dev/disk/by-diskseq/39699 /dev/disk/by-path/pci-0000:00:14.0-usb-0:5.1:1.0-scsi-0:0:0:0 /dev/disk/by-id/usb-Generic-_SD_MMC_MS_PRO_20120926571200000-0:0
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd:
編集3
sdb
ファイルが開いたり、接続されていませんdiskbyseq
。
% lsof | grep sdb
# nothing
% lsof | grep diskseq
# nothing
システムが13日間実行されました。
% uptime
09:55:33 up 13 days, 22:36, 1 user, load average: 2.13, 2.08, 2.03