2012-12-07 72 views
0

我使用PostgresSql(驅動程序爲Npgsql)爲.Net 2.0開發了自定義會話狀態存儲。定製商店運行良好,但我們面臨一個嚴重的問題:PERFOMANCE。
如果不使用自定義狀態,在高峯時段,CPU利用率僅爲10%,但使用自定義存儲時,CPU利用率約爲100%。我們改變使用免費版的Devart for Postgres,問題是一樣的。
約1000個會話中,我們的web服務每秒約有2000個請求(一個人可以使用我們的網頁打開多個瀏覽器選項卡)。每個會話僅在會話創建時纔在會話中存儲布爾,字符串和整數。
我在Postgres中使用存儲過程來與數據庫進行交互。
如果我更改配置文件來刪除自定義會話,問題就解決了:((
使用自定義會話存儲臉上性能問題中的任何一個
是否有Npgsql的任何性能問題(我使用的是最新的)?
請幫幫忙!.Net 2.0性能問題的自定義會話狀態存儲

更新1
我們改變使用DB作爲Oracle 10g中使用免費dotconnect從devart,問題是一樣的。
更新2個
w3sp.exe過程是一個偉大的est消費者CPU(90%)

+0

代碼在哪裏? –

+0

對不起,我不能在這裏發佈代碼。在自定義會話存儲中,沒有循環。所以我認爲這個問題來源於M $ Session的存儲提供者機制。 – QuangND

+0

沒有跡象表明你的問題與nPgSQL有關。您需要進行一些分析以確定系統的瓶頸。打開/關閉會話提供程序時,查詢速率會發生什麼變化?哪些查詢最常運行,哪些查詢花費最多時間?看看'pg_stat_statements',這對此很有幫助。你可以插入一個緩存層,將會話數據存儲在非耐用的未記錄的表格中,等等? –

回答

1

現在我確信如果每秒請求太多,使用數據庫的自定義會話存儲會消耗大量CPU。 我們正在使用:CPU X3210,主Intel S3000AH,Windows 2003 R2。每秒有2000個請求。