Bagaimana cara mendiagnosis pembekuan acak?

14

Ubuntu sepertinya selalu membeku dalam ~ 15 menit pertama saat boot di mesin saya. Kadang-kadang dalam 5 menit pertama, kadang-kadang butuh 30 menit, kadang-kadang itu tidak pernah terjadi ...

Saya tidak dapat mereproduksinya secara deterministik, tetapi itu terjadi cukup sering sehingga saya mungkin hanya menunggu hal itu terjadi lagi.

Bagaimana saya bisa mendiagnosis pembekuan untuk mengetahui penyebabnya ?

Catatan untuk pemilih dekat:
Tidak, ini bukan duplikat dari pertanyaan ini . Pertanyaan ini adalah tentang diagnosis , bukan pemulihan sementara. Jawaban atas pertanyaan itu hanya memberi tahu saya cara membunuh X Server, gunakan Magic Combo untuk mereset kernel, dll .... yang tidak membantu saya mengetahui penyebabnya.

Beberapa informasi:

  1. Ubuntu 11.04: 2.6.38-15-generik # 66-Ubuntu SMP x86_64 GNU / Linux

  2. Mouse terkadang bergerak, tetapi UI tidak pernah merespons.

  3. Menekan Ctrl+ Alt+ F1untuk masuk ke terminal tidak berfungsi.

  4. The Alt+ SysRqcombo melakukan pekerjaan ... dan tampaknya menjadi satu-satunya hal yang bekerja, selain dari mouse (yang kadang-kadang juga bisa bergerak di sekitar).

  5. Saya tidak kehabisan sumber daya apa pun (banyak gigabytes RAM dan ruang sistem file gratis)

  6. Perangkat keras yang mungkin relevan (dari aplikasi Hardware Lister):

    • Adaptor Jaringan Nirkabel AR9285 (PCI-Express)

    • GT216 [GeForce GT 330M] (Saya menggunakan driver Nouveau, yang sepertinya berfungsi dengan baik)

pengguna541686
sumber
melihat komentar di tempat lain tentang mencoba ssh ke mesin Anda dari komputer lain - sukses / gagal setidaknya menunjukkan tingkat keparahan pembekuan - pertanyaan hebat!
david.libremone

Jawaban:

7

Log harus selalu menjadi porta panggilan pertama Anda. Periksa syslog untuk hal-hal yang tidak diinginkan:

less /var/log/syslog

Periksa juga log Xserver kalau-kalau ada indikasi masalah driver grafis (meskipun itu terdengar kurang mungkin diberikan deskripsi Anda):

less /var/log/Xorg.0.log

Dalam kasus khusus Anda, langkah-langkah ini mungkin tidak menghasilkan sesuatu yang menarik. Dalam hal ini, saya akan tertarik untuk melihat apa yang terjadi pada sistem Anda pada saat masalah berkembang. Untuk itu, secara pribadi, saya akan membuat log sementaratop output pada interval pendek - katakan setiap 5 atau 10 detik. Mudah-mudahan ini akan mengungkapkan jika suatu proses berjalan liar dengan sumber daya pada saat masalah ini terjadi.

Perhatikan bahwa ada alternatif, seperti beralih ke tty lain dengan Ctrl+Alt+F1.. F6(untuk kembali ke GUI, itu Ctrl+Alt+F7) dan menjalankan perintah secara interaktif, atau mengkonfigurasi server SSH dan masuk dari jarak jauh. Kedua hal ini mungkin canggung jika mesin Anda lebih atau tidak responsif, maka saran saya yang lebih canggung untuk menulis file log (yang juga bisa menghadapi masalah yang sama, tetapi lebih mungkin untuk berhasil).

Ini akan melibatkan sesuatu seperti ini:

while [ 1 -eq 1 ] ; do top -b >> ~/top.log; sleep 10; done

Ini akan menulis top output ke file log di ~ / top.log setiap 10 detik atau lebih. Perhatikan bahwa log ini akan tumbuh cukup besar jika perintah ini dibiarkan berjalan untuk waktu yang lama, jadi awasi jika mesin Anda tiba-tiba mulai berperilaku sendiri! Dan hapus log rm ~/top.logsetelah selesai. Perhatikan juga bahwa mengeksekusi perintah di atas adalah hal satu kali; itu tidak akan restart sendiri setelah reboot.

Untuk membaca log yang dihasilkan setelah crash, Anda akan menggunakan

less ~/top.log

dan tekan tombol End tombol untuk sampai ke bawah. Anda akan mencari proses dengan nilai CPU% sangat tinggi, atau nilai RES sangat tinggi.

Ini mungkin atau mungkin tidak membantu, tetapi ini adalah informasi yang berguna untuk dimiliki.

IlluminAce
sumber
Ah terima kasih. Saya baru saja mencari /var/log/messagestetapi tidak ada ... apakah itu file yang sebenarnya atau apakah Anda ingin melihat log di dalam direktori itu? (Jika demikian, log mana?)
user541686
Saya minta maaf, saya sedang memikirkan distribusi lainnya. Mereka semua agak berbeda! Di Ubuntu, padanannya adalah / var / log / syslog. Saya akan memperbarui jawabannya.
IlluminAce
Ah jangan khawatir, terima kasih. :) Saya baru saja melihat syslogdan kern.log, dan pada keduanya, saya mencari SysRq(karena hal pertama yang saya lakukan adalah flush sistem file) ... tapi sepertinya tidak ada yang relevan terjadi sebelum flush, menurut log. Biarkan saya memeriksa log xorg ...
user541686
Hmm, sepertinya tidak ada yang menonjol dalam Xorglog juga. Juga jelas bukan masalah CPU (itu sebabnya saya sebutkan itu bukan kekurangan sumber daya), CPU saya hampir tidak digunakan sama sekali selama pembekuan. Beku benar-benar acak ... kadang-kadang saya menyeret jendela dan membeku, kadang-kadang saya baru saja meninggalkan komputer di sana selama lima menit dan ketika saya kembali itu beku. Tapi itu sama sekali tidak terkait dengan kurangnya sumber daya. Tetap saja info bagus, terima kasih.
user541686
Saya seharusnya menyebutkan bahwa ada sedikit peringatan pada log Xorg, karena Anda mungkin menemukan data dari sesi sebelumnya telah ditimpa oleh sesi baru Anda sekarang. Jika itu masalahnya, Anda dapat melihat data asli dengan mem-boot langsung ke tty (setelah crash ...) dan memeriksa log di sana. Anda dapat boot langsung ke terminal dengan menambahkan "teks" ke akhir baris boot kernel - seperti yang dijelaskan di sini: askubuntu.com/questions/158382/… Ketika Anda selesai, reboot atau masukkan X dengan layanan sudo lightdm start, atau startx secara langsung
IlluminAce