Ada direktori tertentu ( /var/www
), yang ketika saya jalankan ls
(dengan atau tanpa beberapa opsi), perintahnya hang dan tidak pernah selesai. Hanya ada sekitar 10-15 file dan direktori di /var/www
. Sebagian besar hanya file teks. Berikut ini beberapa informasi investigasi:
[me@server www]$ df .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_dev-lv_root
50G 19G 29G 40% /
[me@server www]$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg_dev-lv_root
3.2M 435K 2.8M 14% /
find
bekerja dengan baik. Saya juga bisa mengetik cd /var/www/
dan menekan TAB sebelum menekan enter dan itu akan berhasil daftar tab-penyelesaian semua file / direktori di sana:
[me@server www]$ cd /var/www/
cgi-bin/ create_vhost.sh html/ manual/ phpMyAdmin/ scripts/ usage/
conf/ error/ icons/ mediawiki/ rackspace sqlbuddy/ vhosts/
[me@server www]$ cd /var/www/
Saya harus mematikan sesi terminal saya beberapa kali karena ls
hang:
[me@server ~]$ ps | grep ls
gdm 6215 0.0 0.0 488152 2488 ? S<sl Jan18 0:00 /usr/bin/pulseaudio --start --log-target=syslog
root 23269 0.0 0.0 117724 1088 ? D 18:24 0:00 ls -Fh --color=always -l
root 23477 0.0 0.0 117724 1088 ? D 18:34 0:00 ls -Fh --color=always -l
root 23579 0.0 0.0 115592 820 ? D 18:36 0:00 ls -Fh --color=always
root 23634 0.0 0.0 115592 816 ? D 18:38 0:00 ls -Fh --color=always
root 23740 0.0 0.0 117724 1088 ? D 18:40 0:00 ls -Fh --color=always -l
me 23770 0.0 0.0 103156 816 pts/6 S+ 18:41 0:00 grep ls
kill
tampaknya tidak mempengaruhi proses, bahkan sebagai sudo.
Apa lagi yang harus saya lakukan untuk menyelidiki masalah ini? Itu hanya secara acak mulai terjadi hari ini.
MEMPERBARUI
dmesg
adalah daftar besar hal-hal, sebagian besar terkait dengan HDD USB eksternal yang saya pasang terlalu banyak dan jumlah mount max telah tercapai, tapi saya rasa itu adalah masalah yang tidak berhubungan. Di dekat bagian bawah dmesg
saya melihat ini:
INFO: task ls:23579 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
ls D ffff88041fc230c0 0 23579 23505 0x00000080
ffff8801688a1bb8 0000000000000086 0000000000000000 ffffffff8119d279
ffff880406d0ea20 ffff88007e2c2268 ffff880071fe80c8 00000003ae82967a
ffff880407169ad8 ffff8801688a1fd8 0000000000010518 ffff880407169ad8
Call Trace:
[<ffffffff8119d279>] ? __find_get_block+0xa9/0x200
[<ffffffff814c97ae>] __mutex_lock_slowpath+0x13e/0x180
[<ffffffff814c964b>] mutex_lock+0x2b/0x50
[<ffffffff8117a4d3>] do_lookup+0xd3/0x220
[<ffffffff8117b145>] __link_path_walk+0x6f5/0x1040
[<ffffffff8117a47d>] ? do_lookup+0x7d/0x220
[<ffffffff8117bd1a>] path_walk+0x6a/0xe0
[<ffffffff8117beeb>] do_path_lookup+0x5b/0xa0
[<ffffffff8117cb57>] user_path_at+0x57/0xa0
[<ffffffff81178986>] ? generic_readlink+0x76/0xc0
[<ffffffff8117cb62>] ? user_path_at+0x62/0xa0
[<ffffffff81171d3c>] vfs_fstatat+0x3c/0x80
[<ffffffff81258ae5>] ? _atomic_dec_and_lock+0x55/0x80
[<ffffffff81171eab>] vfs_stat+0x1b/0x20
[<ffffffff81171ed4>] sys_newstat+0x24/0x50
[<ffffffff810d40a2>] ? audit_syscall_entry+0x272/0x2a0
[<ffffffff81013172>] system_call_fastpath+0x16/0x1b
Dan juga, strace ls /var/www/
memuntahkan BUNCH seluruh informasi. Saya tidak tahu apa yang berguna di sini ... Segenggam terakhir kalimat:
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCGWINSZ, {ws_row=68, ws_col=145, ws_xpixel=0, ws_ypixel=0}) = 0
stat("/var/www/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/var/www/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
fcntl(3, F_GETFD) = 0x1 (flags FD_CLOEXEC)
getdents(3, /* 16 entries */, 32768) = 488
getdents(3, /* 0 entries */, 32768) = 0
close(3) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 9), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3093b18000
write(1, "cgi-bin conf create_vhost.sh\te"..., 125cgi-bin conf create_vhost.sh error html icons manual mediawiki phpMyAdmin rackspace scripts sqlbuddy usage vhosts
) = 125
close(1) = 0
munmap(0x7f3093b18000, 4096) = 0
close(2) = 0
exit_group(0) = ?
Jawaban:
Jalankan
strace ls /var/www/
dan lihat apa yang digantung. Itu tentu tergantung pada I / O - itulah yang dimaksud denganD
negara bagianps
output Anda (dan karenakill
tidak membantu, itu salah satu syscalls I / O yang tidak pernah terputus). Sebagian besar hang melibatkan server NFS yang pergi ke dewa, tetapi berdasarkan Andadf
itu tidak terjadi di sini. Pemeriksaan cepatdmesg
untuk apa pun yang terkait dengan sistem file atau disk mungkin bermanfaat, untuk berjaga-jaga.sumber
ls
dikaitkan dengan sesuatu yang mencoba untuk meringkas symlink untuk menemukan apa yang mereka tunjuk, itu bisa menggantung jika symlink menunjuk ke NFS yang mati.df .
dan tidak penuhdf
. Itu pasti bisa menjadi masalah NFS saat itu.strace ls /var/www/
mencetak banyak hal. Apa yang saya cari? Baris terakhir adalahexit_group(0) = ?
.strace -vf ls -l /var/www
untuk melihat apakah itu berhenti pada file atau dir tertentu.Saya punya masalah dengan gejala yang sama. Ternyata saya memiliki symlink di direktori itu ke mount SMB melalui GVFS.
Biasanya
ls
akan selesai secara instan apakah bagian itu dipasang atau tidak. Tetapi dalam kasus ini saya telah menangguhkan dan melanjutkan mesin, dan gunung berkinerja buruk pada umumnya. Menghitung ulang pembagian telah memperbaiki masalahnya.sumber
Saya mengalami masalah yang sama.
Memasuki direktori baik-baik saja, daftar hang, menemukan karya, tab hang lengkap, dan beberapa folder di bawah melakukan pekerjaan. Sangat aneh.
Membaca utas ini pada Kesalahan Server memang menuntun saya pada jalur logika menuju solusi.
Ini berkaitan dengan NAS, dan NAS yang biasa disebut sebagai `automount 'membuat saya menyadari bahwa saya baru saja mengubah fstab saya menjadi' automount 'beberapa drive usb jika ada tetapi tetap berjalan seperti biasa ketika tidak.
Saya kemudian melanjutkan sebagai berikut:
Coba masukkan direktori lagi dan dapatkan perasaan hangat kabur setelah menyelesaikan masalah.
sumber
Saran Womble sangat bagus, dan Anda harus mencobanya terlebih dahulu, tetapi jika mereka tidak memperbaikinya, saya memiliki masalah ini ketika filesystem menjadi tidak konsisten (melalui perangkat keras yang rapuh, bug kernel yang tidak jelas, atau bahkan sinar kosmik).
Jika Anda berpikir itu mungkin, Anda dapat memaksa fsck saat reboot dengan melakukan
touch /forcefsck; reboot
. Perhatikan apa yang dikatakannya pada saat boot, untuk melihat apakah fsck mengambil ketidakkonsistenan.Peringatan : ini akan membuka semua sistem file yang terpasang pada mesin; jangan lakukan itu jika Anda juga memiliki larik disk multi-petabyte yang terpasang, mungkin perlu berhari - hari .
fsck
sistem file juga dapat menyebabkan hilangnya data; jika Anda benar-benar memiliki inkonsistensi dalam sistem file Anda, e2fsck akan mengubahnya dari yang terlihat benar tetapi tidak cukup berfungsi, menjadi yang berfungsi dengan baik tetapi mungkin tidak mengandung semua yang Anda harapkan.sumber
Saya memiliki gejala yang sama persis seperti yang Anda gambarkan. Untuk memperbaiki masalah yang harus saya lakukan adalah memperbaiki alamat server DNS. Kami telah memindahkan NAS ke jaringan baru, yang mengharuskan memperbarui alamat server DNS. Alamat-alamat itu ditetapkan secara statis, tetapi di antarmuka web QNAP saya memperbaruinya untuk secara otomatis ditetapkan.
sumber
Dengan harapan ini akan membantu, saya memiliki gejala di atas yang disebabkan oleh penggunaan
docker
dandocker compose
dengan driver AUFS di Ubuntu 14.04.ls <dir>
tergantung, danstrace ls <dir>
menunjukkan itu tergantung padagetdents
panggilan. Menghentikan semua kontainer yang berjalan memungkinkan saya untuk mulai menggunakan drive seperti yang diharapkan.sumber
Menjalankan strace ls / var / www / akan memberi Anda tahu apa yang salah. Saya punya masalah serupa untuk / dir dan menggunakan strace saya bisa menemukan itu adalah mount NAS yang menyebabkannya. Lepas dari NAS itu memperbaiki masalah.
sumber