2010-03-03 64 views
0

ASP.NET新手在這裏ASP.NET + Lucene網站的奇怪錯誤

我編寫了一個ASP.NET網站,並運行win'08(遠程託管)。應用程序查詢11個非常大的Lucene索引(每個〜100GB)。我在Page_load()上打開IndexSearchers並保持打開狀態,並根據用戶輸入的關鍵字將它們傳遞給查詢方法。

我可以在VS-2008中使用RDC並運行該網站。我可以通過網絡從我的桌面部署和訪問它。出於一些奇怪的原因,我的一些隊友在運行同一站點時遇到問題 - 他們可以很好地登錄,因此訪問不成問題 - 但應用程序只是「掛起「當他們進行一些搜索時。

任何建議我應該在哪裏看?這可能是多個搜索者同時查詢的問題嗎?有任何想法嗎?

回答

0

聽起來像鎖定問題。

您不能在Web應用程序中持有任何資源超過需求(請求)。

所以我相信你不應該容納Lucene索引。

另請檢查站點運行的帳戶的文件系統權限。

此外,你應該檢查事件日誌,你可能會有一些警告或無聲的錯誤。

+0

現在我有我的搜索方法都在一個靜態類,並調用方法就像公共靜態DoSearch(參考IndexSearcher,字符串查詢) 而是你建議我在DoSearch()打開一個Indexsearcher並關閉它? – Mikos 2010-03-03 04:35:40

+0

首先你需要隔離問題。確保Lucene導致這種情況。但是,當然,您需要關閉這些索引,因爲「多索引編寫者或讀者可以嘗試同時編輯lucene索引文件(重要的是要關閉索引編寫器/閱讀器,以便釋放文件鎖定)。 – 2010-03-03 04:45:38

+0

我確實檢查過並設置了要測量的計時器,但沒有出現查詢需要很長時間(幾毫秒到1秒)...但綁定到gridview似乎花費了過多的時間。 在ASP.NET上使用Lucene有什麼最佳實踐嗎?以下是我在搜索SO和Lucene站點時收集的內容: 1.在PageLoad()上打開IndexSearchers並在用戶會話期間保持它們。 2.打開搜索器IndexReader = true(我的編寫者在單獨的守護進程計劃任務進程中) 3.使用HitsCollector而不是Hits類。 4.將索引移動到多個物理磁盤上(我有2) – Mikos 2010-03-03 18:53:01