2009-02-12 68 views
3

我們有一個ASP.Net 2.0 Web應用程序運行在使用ASP.Net狀態服務存儲會話的Web場中。ASP.Net國家服務的問題

我們一直有間歇性的服務問題,並改變了一些東西,比如machine.config中的machineKey。

我的實際問題是圍繞狀態服務服​​務的監視。我們有4個可用的性能計數器運行在託管服務的服務器上,但我們還沒有看到單個會話超時。我們也看到一段時間內活動會話的數量緩慢上升,但從未減少。

會話超時時,狀態服務是否識別?有什麼我們應該手動做?

編輯:我們已經放棄了狀態服務並使用了SQL服務器會話。

要回答下面的問題,似乎會​​話會一直持續下去,直到服務崩潰,並且任何oen線程都鏈接到狀態服務器是非常令人懷疑的。這是一天結束時相當基礎的網絡應用程序。

從閱讀中我發現許多其他人都經歷過類似的事情,但似乎在任何迴應中都缺乏常識和知識。

MS似乎幾乎沒有關於此主題的文檔。

回答

1

在ASP.Net會話超時可以在web.config和machine.config中配置。假設沒有任何變化,默認超時將是20分鐘。 machine.config文件可以設置爲不允許覆蓋,這意味着web.config文件中指定的任何更改都不會覆蓋這些設置。

您是否確保在機器和網絡配置文件中都有適當的設置?

假設使用默認設置,狀態服務應該在每次會話20分鐘後關閉每個會話。

您的不活動會話在什麼時候掉線?我假設他們沒有指數增長,除非你重新啓動服務以清除它們,否則它們必須在某個時候被丟棄。

+0

經過幾個小時的監測,我終於有一個會議被放棄了,但是這涉及到一些特定的代碼。 非活動會話似乎根本不會被丟棄 – Blatfrig 2009-02-12 12:29:52

0

你有什麼可能會觸及會議並保持活力而不知道嗎?是否有線程正在產生一些正在工作inteh背景,並堅持你的會議?就我的要求而言,暫停時間是在他設置的web配置文件中,但它並不是那裏的魔法。

0

根據我的經驗,我們發現本地狀態服務器甚至使用SQL Server進行會話都是非常可怕的情況,因爲兩者都有問題。

我認爲你可以通過探索其他產品來達到絕對最佳效果。 免費選項將是Velocity但它仍未發佈。
另一個全面但經過驗證的產品將會(實際上非​​常昂貴)NCache

請看一下,看看哪個最適合你。

關於SQL Server,如果您有足夠數量的點擊進入,您的服務器將會很快死亡(我相信您已經有一些點擊讓您做Web Farm,或者您只是爲了冗餘而做)

0

我相信這會被改變,但我不得不說。

如果您在使用狀態服務器時遇到問題,那麼您的Web應用程序中可能存在錯誤。 Charles的評論似乎是開始檢查的好地方,但某處存在生命週期問題。

回到代碼並檢查您的假設。拿一臺新電腦,訪問你的網站(創建一個會話),讓它坐下一個小時。如果你的會話還活着,那麼有些事情是錯誤的。創建一個新的Web應用程序,它只有一個頁面報告當前會話的年齡並嘗試相同的事情。您應該在一小時後(默認爲20分鐘)發現該會話不再有效。現在你有一個按預期工作的系統,一個不是,都使用同一個會話服務器,所以你可以把這個問題作爲問題排除,現在開始通過代碼/配置,看看你可以在哪裏保持它活着(或防止超時)。

順便提一句,這是一個'有效'的會話配置。如果你沒有你想找這樣的事情,你可能已經找到了你的問題:

<sessionState 
    mode="StateServer" 
    stateConnectionString="tcpip=10.1.1.1:55455" 
    cookieless="false" 
    timeout="20" /> 

另外,還要確保你沒有覆蓋你的web.config與machine.config中有一個更長的超時。