session 为什么不见了?谈 IIS 应用程序池的两个重要设置
2017-05-17 15:08
253 查看
经常听到程序员会说,明明设置了很长的超时时间,为什么没有生效呢?session 很快就被清空了。
asp.net 默认的 session state 模式是 in proc(进程内),数据是在网站的应用程序池里面保存的。这样在 web.config 设置的超时时间,是在应用程序池没有发生回收的基础上才是有效的。
这样就出现了问题,为什么应用程序池会发生回收?如何禁止应用程序池的回收,让 session 的数据可以保存得时间长一点呢?
这和 IIS 应用程序池的两个设置有关:
【回收】里面的【固定时间间隔(分钟)】和【进程模型】里面的【闲置超时(分钟)】,这两项的默认设置大概是二十或三十分钟的样子。也就是说,在应用程序池的运行时间达到设置的间隔,应用程序池会发生回收,session 会被清空;在网站空闲,即没有请求的时间达到设置值,应用程序池会发生回收,session 会被清空。
这种回收的行为在一个正式运营的网站上面,是很不合适的。我觉得 IIS 的默认值是这样也有点奇怪,因为默认值应该是一个最通用,适合最多人的一种设置,这两项的默认值显然不是。可能 windows 毕竟是最流行的桌面系统,考虑到回收可以节省资源,不影响其他的工作任务,才这样设置的吧。服务器一般都是单一的工作任务,不进行回收带来的价值,明显是高于所消耗的资源的。
所以,如上面的截图所示,我建议把这两项都设置为 0,禁用这两种回收行为。
原文链接:http://bibaoke.com/post/66
asp.net 默认的 session state 模式是 in proc(进程内),数据是在网站的应用程序池里面保存的。这样在 web.config 设置的超时时间,是在应用程序池没有发生回收的基础上才是有效的。
这样就出现了问题,为什么应用程序池会发生回收?如何禁止应用程序池的回收,让 session 的数据可以保存得时间长一点呢?
这和 IIS 应用程序池的两个设置有关:
【回收】里面的【固定时间间隔(分钟)】和【进程模型】里面的【闲置超时(分钟)】,这两项的默认设置大概是二十或三十分钟的样子。也就是说,在应用程序池的运行时间达到设置的间隔,应用程序池会发生回收,session 会被清空;在网站空闲,即没有请求的时间达到设置值,应用程序池会发生回收,session 会被清空。
这种回收的行为在一个正式运营的网站上面,是很不合适的。我觉得 IIS 的默认值是这样也有点奇怪,因为默认值应该是一个最通用,适合最多人的一种设置,这两项的默认值显然不是。可能 windows 毕竟是最流行的桌面系统,考虑到回收可以节省资源,不影响其他的工作任务,才这样设置的吧。服务器一般都是单一的工作任务,不进行回收带来的价值,明显是高于所消耗的资源的。
所以,如上面的截图所示,我建议把这两项都设置为 0,禁用这两种回收行为。
原文链接:http://bibaoke.com/post/66
相关文章推荐
- 自定View之自己绘图_两个重要方法onDraw/onMeasure设置View最终宽高
- IIS-设置session时间
- Cookie和Session-----会话跟踪中的两个重要技术
- 如何设置IIS 6的应用程序池(4G内存)【转】
- 正在进行调试的Web服务器进程已由Internet信息服务(IIS)终止。可以通过在IIS中配置应用程序池Ping设置来避免这一问题。有关更多详细信息,请参见“帮助”
- 为什么一段时间后网站后台自动退出 php中session过期时间设置
- 在web.config和IIS中设置Session过期时间
- IIS 应用程序池设置
- IIS内存溢出-设置IIS的应用程序池
- Cookie和Session-----会话跟踪中的两个重要技术
- C# asp.net IIS 在web.config和IIS中设置Session过期时间
- 为什么我这两个ImageView所显示的图片是一样大的呢,我是想把图片设置更大点,可怎么设置都一样啊
- IIS部署ASP.NET网站后提示只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态...
- 为什么要设置session过期时间
- c#中为什么能创建同名线程,同名线程如何区分呢,比如设置两个同名线程为不同优先级
- IIS健全应用程序池设置
- 为什么IIS的应用池回收设置默认为1740分钟-20180720
- IIS健全应用程序池设置 (转)
- Jsp页面为什么会有两个设置编码的地方?
- 在web.config和IIS中设置Session过期时间