Saya memiliki server Windows 2008R2 yang menjalankan NSClient ++. Untuk beberapa alasan, layanan ini telah memutar celana dalam dan berhenti merespons jajak pendapat Nagios.
Ketika saya mencoba me-restart layanan manajer layanan membutuhkan waktu lama untuk mencoba dan mematikan layanan kemudian akhirnya menyerah dengan pesan di sepanjang baris "layanan butuh waktu terlalu lama untuk merespon". Tapi ... itu juga memulai contoh baru dari layanan.
Jika saya mencari di Task Manager atau tasklist
sekarang saya dapat melihat dua contoh nsclient++.exe
menjalankan.
Saya mencoba untuk membunuh keduanya menggunakan:
klik kanan dan "Akhiri Proses" di task manager - berpura-pura untuk membunuh proses dan melaporkan tidak ada kesalahan (misalnya Access Ditolak) tetapi prosesnya masih ada.
taskkill /PID <proc id> /F
- melaporkanSUCCESS: The process with PID 6672 has been terminated.
tetapi prosesnya masih berjalan.mengunduh SysInternals PsTools dan menjalankan
pskill <PID>
- laporanProcess <PID> killed
- namun prosesnya masih ada.mengeksekusi
at hh:mm pskill <PID>
untukpskill
melakukan ini sebagaiSYSTEM
akun ... dan Anda menduga prosesnya masih berjalan.
Semua hal di atas dijalankan dalam prompt perintah Administrator.
Selain reboot yang tidak terlalu ideal (kotak ini adalah server produksi yang cukup kritis), apa lagi yang bisa saya coba?
Server tidak berada di bawah tekanan sumber daya apa pun (memori, CPU, disk, dll) dan semua yang berjalan di dalamnya baik-baik saja.
Seperti yang terlihat cepat pada tab utas di SysInternals Process Explorer menunjukkan bahwa semua nsclient++.exe
instance ini macet bongkar:
Selain itu, saya juga mencoba membunuh semua koneksi TCP untuk proses zombie (?) Ini (dengan TCPView) dengan harapan saya bisa memulai instance baru dan bisa mengambil port 5666. Kemudian kita bisa reboot server ketika segalanya lebih tenang, tetapi sayangnya itu tidak berhasil.
Stack
, seperti apa tumpukan itu untuk utas yang macet?Jawaban:
Meskipun sepertinya Anda sudah mengetahui hal ini, masalahnya adalah bahwa prosesnya menunggu sesuatu di Kernel. (Ini biasanya masalah tingkat driver, tetapi tidak selalu.) Satu-satunya cara untuk mematikan proses semacam itu adalah dengan membongkar kernel, yang, tentu saja, tidak dapat Anda lakukan tanpa me-reboot.
Mungkin patut dicoba beberapa debugging kernel ( apakah alat ini berfungsi pada 2008 R2 ?) Dengan harapan mempersempit penyebab atau konflik spesifik, tetapi opsi Anda untuk menangani masalah tersebut baik dengan itu, atau me-reboot server untuk menghilangkannya.
Apakah ada alasan Anda belum mempertimbangkan untuk hidup dengannya? Jika itu hanya proses zombie, dan itu tidak berdampak apa-apa, saya pikir Anda bisa menunda reboot sampai jendela pemeliharaan atau lebih banyak waktu yang tepat. Biasanya pendekatan saya, ketika zombie atau proses digantung tidak mengganggu apa pun - rawatlah selama siklus patch berikutnya atau jendela pemeliharaan terjadwal.
sumber