Terlalu banyak file terbuka di Lucene Indexing ketika jumlah pengguna bertambah

Saya telah menggunakan Pengindeksan Lucene dan teknik pencarian untuk aplikasi web saya. Awalnya saya menghadapi "Masalah terlalu banyak file terbuka", setelah penelitian saya memperbaikinya dengan menggunakan IndexSearcher umum untuk pengguna tunggal. Kemudian, ketika saya menguji aplikasi dengan lebih banyak pengguna secara bersamaan, aplikasi tersebut kembali memunculkan "Masalah terlalu banyak file yang terbuka".

Saya menyimpan Objek IndexSearcher di sesi pengguna tertentu, yang selalu membuka beberapa file (yang sedang mereka gunakan). Adakah yang bisa membantu mengatasi masalah ini meskipun ada sejumlah pengguna?

Beri tahu saya jika saya kurang jelas dalam penjelasan di atas.


person Manoj    schedule 22.11.2011    source sumber
comment
Menggunakan Linux di server aplikasi   -  person Manoj    schedule 22.11.2011


Jawaban (1)


FAQ Lucene memiliki entri yang bagus tentangnya.

Pendeknya:

  • Periksa apakah semua Lucene IndexReader, IndexWriter, dan IndexSearcher Anda ditutup dengan benar
  • Cobalah untuk menggunakan file gabungan, yang membatasi jumlah file yang dibuat
  • Tingkatkan batas pegangan file yang dibuka di sistem operasi Anda

Saya memiliki masalah serupa dengan Lucene beberapa waktu lalu, dan ketika Anda memiliki banyak pengguna secara bersamaan, batas ini dapat dicapai dengan mudah. Meningkatkan batas pegangan file berfungsi dengan baik.

person Vivien Barousse    schedule 22.11.2011
comment
Petunjuk bagus Vivien. Saya harap ini akan berhasil. Masih saya punya pertanyaan.. Sebelumnya, saya mencoba mempertahankan sesi hits. Ini juga membuat file tetap terbuka dan saya membatalkan rencananya. Apakah ada cara untuk menjaga hasil (atau hasil) tetap dalam sesi tanpa membuka file? - person Manoj; 22.11.2011
comment
@ user1059414 Salin hasilnya dalam objek khusus, sehingga Anda bisa melepaskan objek Hasil Lucene tetapi tetap menyimpan data dalam bentuk lain. - person Vivien Barousse; 22.11.2011
comment
Terima kasih Vivien. Ya, saya mencoba hal yang persis sama beberapa waktu sebelumnya. Saya membuat objek khusus, menyimpan nilai dari Hits ke dalamnya, lalu mengemas objek tersebut ke dalam satu ArrayList. Saya mulai menyimpan ArrayList ini di sesi tersebut. Semuanya berfungsi dengan baik tetapi semuanya mulai memengaruhi kinerja. Ketika saya mengambil statistik, saya menemukan, pengambilan data dari indeks memakan waktu 4 detik dan mengemasnya ke dalam ArrayList Objek khusus membutuhkan waktu hampir 12 detik...Tolong sarankan saya jika saya melakukan ritual itu - person Manoj; 23.11.2011
comment
Siapa pun tolong sarankan saya solusi untuk ini. :( - person Manoj; 24.11.2011
comment
Mengapa Anda mengutamakan hasil sesi? Cobalah untuk menjaga hasil dalam cakupan permintaan, meskipun itu berarti menjalankan ulang kueri penelusuran untuk membuka halaman berikutnya dalam hasil penelusuran. - person Vivien Barousse; 24.11.2011