2010-04-17 70 views
1

我們已經開始了一個新的CF8應用程序,它運行速度慢。我們在ColdFusion(數據庫實用程序中的查詢)中進行的測試顯示正常速度(80毫秒)。 CF8以60到80秒的時間返回相同的查詢!ColdFusion 8慢性能

我一直在網上查看,看到很多關於CF8和性能問題的文章,但沒有得到任何解決方案的總體感覺;很多人在嘗試並說他們沒有CF7的問題。我們也在服務器上看到不穩定,以及一些與垃圾收集和內存堆有關的錯誤。

我們有一些關於CF8運行的其他應用程序和他們進行充分的......我們的程序員是不是專家或大師,他只是塞了。我們已經將這個問題分解爲一個需要永久返回的查詢,因此這不是一個複雜的測試。

是否有任何已知的CF8問題或我們應該考慮嘗試的明顯調整?如果我們必須重新開始學習新的環境,我將永遠不會限期。

JoeBob

+0

所以,用數據庫客戶端運行一個查詢需要80毫秒,但通過ColdFusion的CFQUERY完全相同的查詢需要60-80秒? 在同一個應用程序中的其他查詢需要正常的時間嗎? Coldfusion 8有一個很不錯的服務器監視器 - 你有沒有調查過這個?如果打開所有3個監視選項,則可以精確地看到代碼掛起的位置,並且您還可以看到正在運行的數據庫查詢。 數據庫服務器是否也報告此查詢需要60-80秒?或者,對於數據庫服務器,查詢運行很快? – 2010-04-17 19:15:30

+0

我的經驗和我在CF show 8上的大部分博客都比7大改進。你是否應用了所有補丁和修補程序? – kevink 2010-04-17 19:37:50

+2

爲什麼不共享查詢? – Yisroel 2010-04-18 03:12:32

回答

2

好吧,這裏是我會怎麼做:

  1. 我把查詢限制1或TOP 1(DB你)會看到那麼會發生什麼。

  2. 試着運行查詢,其中只有60秒作爲頁面上的東西。不輸出任何內容,只需運行查詢。

  3. 如果您發現內存和GC出現問題,請關閉調試,取消選中管理員中的所有調試選項。

  4. 確保CF8附帶的監視器工具關閉了所有選項。

如果這沒有幫助,我們可以走得更遠。

編輯:可能是一個問題的第一件事是返回記錄的數量。其次是你做了大量的數據處理,如果打開調試,記錄頁面執行期間發生的所有事情都會被記錄下來。我看到服務器在調試時填充了幾乎10GB的RAM,而沒有它的同一個進程花費了40MB。第三種選擇是服務器或設置真的有問題。

+0

我們已經嘗試過100強,查詢仍然需要相同的時間或更長的時間才能返回。它現在是頁面上唯一的東西,我們不輸出,只是按照您的建議運行查詢。查詢返回的記錄越多,記錄時間越長。如果它只返回幾條記錄,則需要幾秒鐘才能返回,但仍然太慢。但是,如果它返回數千條記錄,則需要一分鐘左右的時間。但是,再次,我們不在測試中輸出任何東西,我們只是在做選擇。我將檢查調試選項 – JoeBob 2010-04-18 12:28:23

0

根據你最後的解釋,問題似乎與你的查詢,而不是CF.你正在運行哪個數據庫?你有桌子上的索引嗎?

+1

除了什麼數據庫,您使用什麼協議和驅動程序連接到它? ODBC還是JDBC?我最近遇到了一個SQL Server 2005的問題,它使用一個SSL JDBC驅動程序永久運行一個使用cfsqltype =「CF_SQL_VARCHAR」的CFQUERYPARAM的查詢。使用存儲過程而不是查詢解決了滯後問題。 – 2010-04-19 19:38:02

0

您是否需要所有正在返回的列?你在用SELECT *嗎?你應該只返回你需要的列。即使您不輸出數據,仍然有很多數據從數據庫傳遞到Web服務器。

0

感謝大家的幫助......我想,作爲建議,這個問題是不是CF問題都沒有......我們仍在運行測試時間相同的查詢PHP中類似的條件,但所有我的經驗是使用非網絡應用程序,而我只是沒有意識到「選擇」確實意味着「選擇並將所有數據傳輸到網絡服務器」,即使沒有任何輸出到屏幕上。轉移到20,000多條記錄(包括許多不需要的字段)需要花費大量時間。我之前被告知,在這段延遲期間數據庫服務器並未處於活動狀態,結果證明這是錯誤的信息。我不得不繞過程序員,並得到管理員,並看看性能監視器,看到這顯然是錯誤的;傳輸數據需要時間和帶寬。

JoeBob