Saya sedang menjalankan lsof di salah satu server Linux saya untuk memeriksa apakah satu file ( /tmp/incoming_data.txt
) dalam sistem ext3 dibuka oleh program lain. Server saya memiliki banyak koneksi TCP. Yang aneh adalah eksekusi 'sudo lsof' membutuhkan waktu sekitar dua menit untuk selesai dan ia menggunakan CPU 99.x% selama dua menit itu.
Perintah yang saya gunakan adalah sudo lsof /tmp/incoming_data.txt
. Saya sudah mencoba " fuser " yang membutuhkan jumlah CPU dan waktu eksekusi yang sama. Apakah ada yang bisa saya lakukan untuk memperbaiki masalah ini?
lsof
ditunjukkan? Berapa banyak proses dan utas yang membuka file itu? Berapa beban CPU saat tidak menjalankan lsof?Jawaban:
Jika Anda yakin dapat melewati koneksi TCP atau UDP yang terbuka, karena Anda menyebutkan terlalu banyak, Anda dapat menggunakan opsi dialek khusus lsof
-X
.Baca halaman manual lsof dan cari '-X' untuk informasi terperinci.
sumber
Lewati
-n
pilihan untuk melewati penyelesaian nama DNS koneksi IP. Ini hampir pasti akan menjadi bagian terbesar dari setiap perlambatan.sumber
Saya telah menemukan paket NPM kecil ini yang melakukan pekerjaan luar biasa mempercepat lsof untuk file: https://www.npmjs.com/package/lsof-mac-fast .
Saya membuat skrip wrapper untuk menggunakannya:
Ini skrip saya:
Interval pengulangan bisa sangat rendah, misalnya 10 ms tampaknya berfungsi dengan baik.
sumber