煎饼 发表于 2005-4-12 13:44:00

[转帖]你的程序支持 IIS6 - Web Garden 吗?

你的程序支持 IIS6 - Web Garden 吗?

很就没有更新BLOG了呵呵。 刚过来深圳,时间都是乱来的~~~
今天帮客户搞定一个部署上的问题,花了我半天的时间。。555。

后来才发现原来是IIS6 Web Garden的问题。

IIS6 Web Garden 指的是一个应用程序可以成多个进程(w3wp.exe)来执行,一次请求使用其中的一个。用这个的主要目的是提高程序的可用性。当其中一个进程发生错误,那么也不会影响其他进程。发生错误的进程可以根据规则关闭,而其他的进程则可以继续工作。

可惜不是每个应用程序都支持Web Garden的。 例如我做的那个就不是。

一般来说 , 不支持 Web Garden 的原因是各应用程序的内存状态是不同的。虽然是访问同一个网站 , 当访问第一个进程时,进程的内存如果纪录了某些重要的信息,而当访问第二个进程的时,却无法再得到那些信息时,那么程序就不一定能运行正常,或者会发生错误。

所以,一般使用 InProc HttpSessionState / HttpApplicationState / 静态变量来储存关键信息 的程序是不支持 Web Garden的。另外平时说Session信息丢失,也和这个有关。一般很多程序都使用Cache来储存临时数据,但如果某些被修改或删除的数据没有在该进程的Cache中得到更新,那么也会很容易导致程序出错。

如果你的程序用上面说的方法,并且在Windows2003/IIS6中发生奇怪的错误,那么请检查一下Web Garden的设置。




如果你希望应用程序支持Web Garden,甚至是支持集群,那么最简单的办法就是,尽量用Cookie来纪录登陆信息,以及所有的数据获取的动作都是从数据库中读取。例如Duwamish就是这种类型的程序。

如果一个应用程序连Web Garden都不支持,那么就更难支持集群了。

水婷 发表于 2005-4-13 17:25:00

这是什么

yzhlinux 发表于 2005-4-14 19:11:00

<P>配制2003服务器的人一定要注意了,上面说的东西在实际中就是:
如果你的asp程序使用了session那么请不要开2个和2个以上的web圆进程,如果想开,那么请把asp程序的session功能用cookie代替。</P><P>如果是asp.net的程序,那么请把session的存储放到数据库中去。否则不能同步</P>

煎饼 发表于 2005-4-24 10:05:00

<B>以下是引用<I>yzhlinux</I>在2005-4-14 19:11:00的发言:</B>

<P>配制2003服务器的人一定要注意了,上面说的东西在实际中就是:
如果你的asp程序使用了session那么请不要开2个和2个以上的web圆进程,如果想开,那么请把asp程序的session功能用cookie代替。</P>
<P>如果是asp.net的程序,那么请把session的存储放到数据库中去。否则不能同步</P>


我们用了两个web园,所以帖子数目总是不同步的

爱烟 发表于 2005-8-19 19:40:00

页: [1]
查看完整版本: [转帖]你的程序支持 IIS6 - Web Garden 吗?