簡體   English   中英

ASP.NET Lucene性能改進問題

[英]ASP.NET Lucene Performance Improvements question

我已經編寫了一個ASP.NET網站並在win'08(遠程托管)上運行。 該應用程序查詢11個非常大的Lucene索引(每個索引約100GB)。 我在Page_load()上打開IndexSearchers,並在用戶會話期間保持打開狀態。

我的問題:

  1. 這些查詢大約需要5秒鍾才能完成-可以理解,它們是非常大的索引-但是用戶希望響應速度更快。 我很好奇要擠出更好的性能。 (我確實查看了Apache Lucene網站,並在那里嘗試了一些想法)。 對是否以及如何進行進一步調整很感興趣,尤其是從asp.net角度來看。

  2. 一種想法是使用Solr而不是直接查詢Lucene。 但這似乎違反直覺,在兩者之間引入了另一種抽象,可能會增加延遲。 移植到Solr值得頭痛嗎? 如果值得的話,任何人都可以分享一些指標,以了解改用Solr后您獲得了哪些改進。

  3. Solr中是否可以復制一些關鍵的東西以加快響應速度?

一些問題/想法:

  • 您是否要為單個請求擊中所有 11個索引?
  • 您可以重新組織索引,以便僅命中1個索引(即分片)嗎?
  • 您是否運行過應用程序的配置文件(使用dotTrace或類似工具)? 時間在哪里? Lucene.Net?
  • 如果大部分時間都花在Lucene.Net上,那么如果您遷移到Solr,則等待時間應該可以忽略不計(與剩余時間相比)。 另外, 可以輕松分發Solr以提高性能。
  • 我對Lucene不太熟悉(我使用Solr),但是如果您要在每個請求中搜索11個索引,可以並行運行這些搜索(例如,使用TPL )嗎?

最大的事情是從網絡層中刪除搜索,並將其隔離到它自己的層(搜索層)中。 這樣,您將擁有一個專用框,該框具有專用資源,這些資源已加載索引並在緩存中“預熱”,而不是讓每個用戶都有其自己的索引讀取器的副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM