2014-12-14 22 views
5

Java WatchService'u çok sayıda dizindeki değişiklikleri (yüzlerce binlerce) dinlemek için kullanmak istiyorum, ancak bu sayıda izlenen dizin için uygun olup olmadığını bilmiyorum.WatchService birçok dizinde performans

WatchService ile bu tür dizinlerde deneyim sahibi olan var mı?

Eğer yardımcı olursa, WatchService, EXT4 dosya sistemi ile CentOS 6.5'te kullanılacaktır.

sayesinde Mickael

+0

Sadece merak ediyorum: bunun uygulaması nedir? Neden bu kadar çok dir? – Fildor

+0

Uygulama, Yıldız tarafından oluşturulan sesli posta dizinlerini izlemek için kullanılacaktır. Asterisk'in sesli mesajları saklamak için birden fazla arka planı vardır: dosya sistemi, ODBC ve IMAP. ODBC performansından korkuyorum, bu yüzden dosya sistemini kullanmam gerektiğini düşündüm. –

+0

Bunun için bir etkinlik belirten bazı yıldız işareti API'sı için kontrol ettiniz mi? – Fildor

cevap

3

Bu durum IDE için oldukça yaygındır. Sıklıkla karmaşık dizin yapıları ve binlerce dosyadan oluşan 10'lu diziler için dizin izlemeyi kullanırlar. Linux'ta

  • sık sık ayar OS kadar çok dosya izlemek için gerekir:

    dikkat edilmesi gereken iki şey vardır.

https://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit o (512K, diyelim ki,) saatler sınırı artırmak önerilir Bu durumu önlemek için. Sen /etc/sysctl.conf dosyasına aşağıdaki satırı ekleyerek yapabilirsiniz:

fs.inotify.max_user_watches = 524288 

Bu örnek 512k dosyaları izlemek için sisteme geçer.

  • Bir HDD varsa, onu daha hızlı dönmeye yapmaz ve büyük olasılıkla 80 yapar - 120 IOPS (IO Per Second) ile bu hoşunuza gidebilecek daha bir performans darboğazı olması daha muhtemeldir.

Java'daki birçok IO işlemi gibi, aslında işletim sistemi tarafından uygulanan bir tesisin etrafındaki sarıcıdır.