iis站点 Session值不规律变化

作者:zarte    发布时间: 2021-05-09

iissessionWebFarm

现象

碰到一个很怪异的问题,net站点用到Session,在Session中存放了用户登陆验证信息,包含用户id,在本地测试环境一切正常,但线上正式环境测试出现怪事儿。放于Session中的验证信息会无规律的变化。在页面上打印存放的用户token,不停的刷新页面这个值在不停的变化,有个规律是值为之前登陆和最新登陆的值。

原因

网上查了查,终于找出来原因,原来是程序池的设置作怪,有个叫“Web 园(WebFarm)”的东西这一项数值的变化会引起Session值不稳定。
在您创建应用程序池时,就会通知 IIS 创建一个工作进程,以传送指派给该应用程序池的 Web 站点、文件和文件夹的内容。您可以将应用程序池配置为启动多个,而非一个工作进程,这样可以提高可扩展性。这个功能的名为 Web 园(WebFarm)“Web 农场”。您无需使用多台计算机来传送相同的内容(Web 农场),而是可以使用一台计算机中的多个进程来传送相同的内容。在将 IIS 应用程序配置为 Web 园时,您只需在“应用程序池属性”的“性能”选项卡的“最大工作进程数”框中,设置一个大于 1 的工作进程数。如果这个值大于 1,每个请求都将启动一个新的工作进程实例,可启动的最多进程数为您所指定的最大工作进程数。简单点说就是有多个进程提供站点连接服务器,用户访问时随机使用。
Web 园在您的应用程序资源有限的情况下非常有用。例如,如果您到数据库的连接很慢,那么您可以使用多个工作进程来增加用户吞吐量,从而增加到数据库的连接数。尽管在有些情况下使用 Web 园的用处非常大,但是要注意,每个工作进程的会话信息都是唯一的。由于请求以循环的方式路由到应用程序池工作进程,因此 Web 园对于会话信息存储在进程中的应用程序作用可能不大。在少数情况下,让多个工作进程运行同一个应用程序会造成资源竞争。例如,如果所有工作进程都试图将信息记录到日志文件中,或是使用那些不是专用于多个并发访问的资源,那么可能出现资源竞争问题。

解决

具体设置是“打开IIS--打开“应用程序池”中具体项的属性页中的“性能”选项卡,下方的“web 园”项中的值保证值为“1”,如果不是1,就会出现例用这个程序池的程序Session不稳定的情况发生。后续的请求将以循环的方式发送至工作进程。

上一篇:  golang爬取gbk页面中文乱码解决方案

下一篇:  git使用教程大全

加载更多