我們正在開發一個控制檯軟件,用Delphi 7微軟Windows 7和Windows Server 2008 R2的:在運行時顯著上升
爲了簡化,這個軟件是使用嵌入式TCP服務器響應從CGI外部請求。這些答案包含使用DbExpress生成的帶Teechart圖形的HTML頁面和從數據庫提取的數據。
在Windows 7和Windows 2008 R2服務器上,我們注意到我們的軟件運行時間顯着增加 - 在Windows XP或Windows Server 2003上的原始處理時間的2或3倍 - 在標準執行環境中:軟件啓動作爲系統用戶帳戶的服務。
但是,當我們的軟件以簡單用戶的身份從命令提示符或直接從IDE(調試模式)啓動時,問題就會消失。
我的第一個問題是:有沒有人已經注意到這個問題?
使用ProcessExplorer,我們也注意到,當軟件作爲服務啓動時,沒有創建GDI句柄,也沒有用戶句柄。但是,當使用用戶帳戶啓動軟件時,會創建一些這些句柄。在Windows XP和Windows Server 2003中,無論是作爲服務啓動的軟件還是簡單的用戶帳戶,都會創建這些句柄。
這個觀察結果能否與我們的問題聯繫起來?
如果您已經注意到這些行爲,您是如何解決這個問題的?
向進程添加一些跟蹤日誌記錄,並計算出它花費的時間。可能是一百萬個原因。 –
顯然,從XP/2003到Vista/7/2008/2008R2的服務的重大變化是會話0隔離。這可能是其根源。它如何影響你的過程很難讓我們去猜測。 –
你好 謝謝你的意見。 我正在考慮詳細的跟蹤日誌,但我擔心它們不會很重要,因爲它們不是在同一臺計算機上執行的。 但是,時間比例的比較應該提供線索,我會試試。 關於「會話0隔離」確實是一個有趣的想法,我會挖掘。但從我看到的第一次閱讀 我也應該有Server 2008的問題,或者我只有服務器2008 R2的問題(未在Vista上測試過) – Floverdoz