มีไฟล์ที่เปิดมากเกินไปในการจัดทำดัชนี Lucene เมื่อจำนวนผู้ใช้เพิ่มขึ้น

ฉันใช้ Lucene Indexing และเทคนิคการค้นหาสำหรับเว็บแอปพลิเคชันของฉัน ในตอนแรกฉันประสบปัญหา "ปัญหาไฟล์เปิดมากเกินไป" หลังจากการวิจัย ฉันแก้ไขมันโดยใช้ IndexSearcher ทั่วไปสำหรับผู้ใช้คนเดียว จากนั้น เมื่อฉันทดสอบแอปพลิเคชันกับผู้ใช้พร้อมกันจำนวนมากขึ้น มันก็เริ่มทำให้เกิด "ปัญหาไฟล์เปิดมากเกินไป" อีกครั้ง

ฉันกำลังเก็บ IndexSearcher Object ไว้ในเซสชันของผู้ใช้รายใดรายหนึ่ง ซึ่งจะเปิดไฟล์บางไฟล์ไว้เสมอ (ซึ่งพวกเขากำลังใช้อยู่) ใครก็ได้โปรดช่วยแก้ไขปัญหานี้แม้ว่าจะมีผู้ใช้จำนวนเท่าใดก็ได้

แจ้งให้เราทราบหากฉันไม่ชัดเจนในคำอธิบายข้างต้น


person Manoj    schedule 22.11.2011    source แหล่งที่มา
comment
การใช้ Linux ในแอปพลิเคชันเซิร์ฟเวอร์   -  person Manoj    schedule 22.11.2011


คำตอบ (1)


คำถามที่พบบ่อยของ Lucene มีรายการที่ดีเกี่ยวกับเรื่องนี้

โดยสังเขป:

  • ตรวจสอบว่า Lucene IndexReader, IndexWriter และ IndexSearcher ทั้งหมดของคุณปิดอย่างถูกต้อง
  • ลองใช้ไฟล์ผสมซึ่งจำกัดจำนวนไฟล์ที่สร้างขึ้น
  • เพิ่มขีดจำกัดของการจัดการไฟล์ที่เปิดอยู่บนระบบปฏิบัติการของคุณ

ฉันเคยมีปัญหาคล้ายกันกับ Lucene มาระยะหนึ่งแล้ว และเมื่อคุณมีผู้ใช้พร้อมกันจำนวนมาก คุณก็สามารถถึงขีดจำกัดนี้ได้อย่างง่ายดาย การเพิ่มขีดจำกัดการจัดการไฟล์ทำงานได้ดีอย่างสมบูรณ์

person Vivien Barousse    schedule 22.11.2011
comment
เบาะแสที่ยอดเยี่ยมวิเวียน ฉันหวังว่ามันจะได้ผล ฉันยังมีคำถามอยู่.. ก่อนหน้านี้ฉันพยายามเก็บเพลงฮิตไว้ในเซสชั่น สิ่งนี้ทำให้ไฟล์เปิดอยู่เช่นกัน และฉันก็ยกเลิกแผน มีวิธีใดที่จะเก็บผลลัพธ์ (หรือการเข้าชม) ไว้ในเซสชันโดยไม่ต้องเปิดไฟล์หรือไม่? - person Manoj; 22.11.2011
comment
@ user1059414 คัดลอกผลลัพธ์ในวัตถุที่กำหนดเอง เพื่อให้คุณสามารถปล่อยวัตถุ Lucene Result แต่เก็บข้อมูลในรูปแบบอื่น - person Vivien Barousse; 22.11.2011
comment
ขอบคุณวิเวียน ใช่ ฉันพยายามเหมือนกันทุกประการก่อนหน้านี้ ฉันสร้างออบเจ็กต์แบบกำหนดเอง เก็บค่าจาก Hits ไว้ จากนั้นจึงรวมออบเจ็กต์เหล่านั้นไว้ใน ArrayList เดียว ฉันเริ่มเก็บ ArrayList นี้ไว้ในเซสชัน ทุกอย่างทำงานได้ดีแต่ทุกอย่างเริ่มส่งผลต่อประสิทธิภาพการทำงาน เมื่อฉันใช้สถิติ ฉันพบว่าการดึงข้อมูลจากดัชนีใช้เวลา 4 วินาทีและบรรจุลงใน ArrayList ของออบเจ็กต์แบบกำหนดเองใช้เวลาเกือบ 12 วินาที...โปรดแนะนำฉันหากฉันกำลังทำสิ่งต่าง ๆ - person Manoj; 23.11.2011
comment
ใครก็ได้โปรดแนะนำวิธีแก้ปัญหานี้ให้ฉันด้วย :( - person Manoj; 24.11.2011
comment
เหตุใดคุณจึงเก็บผลลัพธ์ไว้ในเซสชั่นตั้งแต่แรก? พยายามเก็บผลลัพธ์ไว้ในขอบเขตคำขอ แม้ว่านั่นหมายถึงการดำเนินการค้นหาซ้ำเพื่อไปยังหน้าถัดไปในผลการค้นหาก็ตาม - person Vivien Barousse; 24.11.2011