2014-04-10 47 views
4

我有一個自定義的應用福克斯嚴重的問題。Arangodb福克斯的應用性能不佳

關於應用程序

該應用程序是用於查找圖中路徑的自定義算法。它針對公共交通進行了優化。在init中,它將所有必要的數據加載到javascript變量中,然後遍歷它們。它更快,然後每次訪問數據庫。

問題

當我通過API訪問的應用程序第一次那麼快如。 300毫秒。但是當我第二次做完全相同的請求時,它是非常慢。例如。 7000ms。

你能幫我解決嗎?我不知道在哪裏尋找錯誤。

回答

6

不知道更多關於應用&的代碼,我只能推測的理由。

潛在原因#1:開發模式。

如果您在開發模式下運行ArangoDB,則會爲每個Foxx路由請求運行init過程,從而無法預先計算值。 通過檢查arangod日誌,您可以發現您是否正在開發模式下運行。如果您處於開發模式,則會有關於該消息的日誌消息。

潛在原因#2:JavaScript的變量是每個線程

你可以用多個線程,每個都具有線程局部變量的JavaScript運行ArangoDB,因此福克斯。如果您向Foxx路由發出請求,則服務器將選擇一個隨機線程來回答請求。 如果JavaScript變量仍然是空的,在這個線程,它可能需要填入第一(這將是你的init調用)。 對於下一個請求,再次挑選一個隨機線程執行。如果JavaScript變量已經在此線程中填充,那麼響應將會很快。如果變量需要填充,那麼響應會很慢。

幾個請求(至少配置--server.threads啓動選項爲多)後,每個線程JavaScript的變量應該被初始化和響應時間應該是相同的。

+0

你的第二個選項是路徑的解決方案。問題是,在初始化到變量我再次添加數據,因爲我認爲該變量是空的,它不是。現在我正在檢查數據是否加載並且工作正常。 –