win7的wcf程序調試
作者:admin發布時間:2021-07-08分類:操作系統下載瀏覽:300評論:17
我有一個C#庫做一些文件處理.我創建了一個控制臺和桌面應用程序,使用該庫并在大約1分鐘內處理文件.然后,我創建了一個在服務中托管的WCF服務,該服務使用相同的文件處理庫,但是從網站調用時需要10倍的時間來處理相同的文件服務正在具有管理員權限的域帳戶下運行.
調用
WCF服務的開銷非???但是方法需要更長的時間.我嘗試在啟動過程中增加進程優先級
()=;
無濟于事我在位桌面系統(6gb),2003XP32bit服務器(4gb)和2008R232bit服務器(4bg)上運行此服務,結果類似.控制臺和桌面應用程序在上述系統上大約1分鐘內處理文件.該進程似乎沒有內存限制并進入swapville.
Windows服務是否以某種方式進行限制?在IIS下運行WCF服務可以獲得更好的結果嗎?
編輯:我嘗試從網站調用庫目錄,也比控制臺或桌面應用程序長10倍.
更新:原來是Log4PostSharp.控win7的wcf程序調試制臺和桌面應用程序在配置文件中沒有任何痕跡的log4net,而網站和Windows服務卻沒有.有一個log4netTraceAppender默默地吃掉了寶貴的cpu周期.
解決方法
我不明白為什么你所描述的行為正在發生–它似乎很奇怪.由于您正在處理內存中較大的文件,垃圾收集器可能會影響它.您可以嘗試更改垃圾收集器運行的模式,看是否有任何影響.
垃圾
收集器有三種模式–工作站,服務器和并發.每個人以不同的方式行事,并針對不同類型的應用進行了優化.工作站模式是默認模式,并且是所有進程運行的,除非配置為使用別的東西.有關模式的更多信息可以找到here.
嘗試明確地將垃圾回收器設置為使用服務器模式(它將僅對多處理器計算機有影響).為此,請將以下內容放在您的app.config文件中:
configuration
runtime
gcServerenabled="true"/
/runtime
/configuration
已有17位網友發表了看法: