抓蟲系列(二) 不要輕視web程序中常用的三個"池" 之應用程序池

前篇回顧:上一篇蟲子給大家介紹了線程安全中容易出錯的地方 內容不深 引發大家的思考與關注 看似簡單的小程序可是爲引發×××煩的額 ~ ~

下面蟲子給大家介紹下web應用範圍的應用程序池、線程池以及數據庫連接池中容易出現的問題

首先來看應用程序池

 你的session丟失了嗎?! 有 當然有 不過我們一般都是設置超時時間或者新版本更新修改了配置文件導致丟失的。好吧,可以預見的異常蟲子就不和大家多扯了。

     應用程序池是將一個或多個應用程序鏈接到一個或多個工作進程集合的配置。因爲應用程序池中的應用程序與其他應用程序被工作進程邊界分隔,所以某個應用程序池中的應用程序不會受到其他應用程序池中應用程序所產生的問題的影響。(概念又見概念、枯燥的東西( ⊙ o ⊙ ))

下面詳細的概念蟲子就不具體說了 幾張圖送上 有什麼功能自己琢磨下

下面是重點了 看到了沒 那個回收工作進程

IIS 將應用程序分散到隔離的池中,並自動檢測內存泄漏、有缺陷的進程和過度利用的資源。如果發生問題,IIS 通過關閉然後重新部署有問題的資源並將有問題的進程連接到解析工具上進行管理。亮點來了

工作進程回收如何工作
1.默認情況下,WWW 服務建立“重疊回收”,即繼續運行要終止的工作進程,直到啓動新的工作進程後爲止。
2.WWW 服務可以終止一個工作進程,然後啓動一個新的工作進程(如果工作負荷允許執行此操作的話)。

何時使用工作進程回收

1.無法修復 Web 服務器上您所主控的有故障的應用程序。
2.遇到不能確定的或間斷性的故障。
3.應用程序由於性能監視的原因而泄漏內存。
4.先前已實施了臨時性的重置解決方案,例如,計劃執行 IISReset 命令行實用工具。

說得籠統點,我們經常碰到的就是:工作進程虛擬內存或者W3wp.exe 進程使用的內存達到閾值(session總體積過大)、未關注應用程序池時間配置

解決這類問題一方面可以禁用工作進程回收

在上圖“回收”選項卡上,清除“回收工作進程(分鐘)”複選框。

另外也可以改變session的存儲方式

	<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;user id=sa;password=" cookieless="false" timeout="20"/>

將inproc(進程模式)改爲StateServer,也就是將會話數據存儲到單獨的內存緩衝區中(這個最常用)或者改爲SQL Server進行數據庫會話管理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章