Saya memiliki proses java (GlassFish) yang merupakan penjelas file bocor. Saya tahu ini karena saya mendapatkan java.io.IOException: Too many open files
pengecualian yang bermanfaat . Saya dapat melihat /proc/PID#/fd
dan melihat semua deskriptor file terbuka. Ketika saya menggunakan lsof, saya mendapatkan sejumlah besar entri seperti ini:
java 18510 root 8811u sock 0,4 1576079 tidak dapat mengidentifikasi protokol
java 18510 root 8812u sock 0,4 1576111 tidak dapat mengidentifikasi protokol
java 18510 root 8813u sock 0,4 1576150 tidak dapat mengidentifikasi protokol
Saya melihat 12 yang baru dibuat per menit. Opsi apa yang dapat saya gunakan di lsof atau alat lain apa yang tersedia bagi saya untuk membantu melacak deskriptor file socket di mana protokol tidak dapat diidentifikasi?
sumber
Jawaban:
untuk melihat 20 file teratas menangani menggunakan proses:
output dalam format file menangani hitungan, pid, cmndline untuk diproses
contoh output
sumber
Biasakan diri dengan perintah strace. Ini memonitor panggilan sistem. Saya baru-baru menggunakannya untuk melacak kebocoran file descriptor yang menyebabkan daemon snmpd kami crash berulang kali. Butuh beberapa waktu untuk membiasakan diri, tetapi ini adalah alat yang ampuh.
Anda dapat menggunakan strace untuk melampirkan ke proses yang sedang berjalan (jangan lupa tanda -f untuk mengikuti proses anak).
sumber
Apa sebenarnya yang Anda coba lacak? Alamat IP jarak jauh yang terkait dengan FD yang bocor, kode yang rusak, atau yang lainnya?
Karena Anda telah mengidentifikasi bahwa ada kebocoran, menghubungi teknisi yang bertanggung jawab untuk proses java ini tampaknya merupakan langkah selanjutnya yang masuk akal.
sumber
can't identify protocol
tidak memberi banyak insinyur untuk dijalankan. Apakah ada alat atau opsi di lsof yang saya tidak melihat yang harus saya gunakan? Masalahnya tidak terjadi dalam tes env dan hanya dimulai dalam env ini setelah migrasi kabinet. Kode yang sama tidak memiliki masalah sebelum migrasi dan ketika aplikasi tidak dipekerjakan, Glassfish masih bocor sendiri. Dugaan terbaik saya adalah sesuatu yang rusak dari perspektif jaringan dan soket mencoba untuk menginisialisasi tetapi tidak bisa dan kemudian mereka menggantung dan ditinggalkan.