zoukankan      html  css  js  c++  java
  • IIS之应用程序池Web园最大工作进程>1时系统出现问题

    问题归纳:

    1,采用企业库Cache作为缓存后出现部分命中不到缓存对象的情况;静态变量计数器也没有按照预想的结果输出数据。

    2,Session取不到的情况,出现在web.config配置为sessionState mode="InProc"

    问题原因:

        当最大工作进程>1(=n)的时候,iis会为web应用开辟n个w3wp.exe(或者aspnet_wp.exe)来提供服务,而这些进程是独立的,包括静态变量和缓存等等,等于完全开启了一个新的应用服务器;

        当iis接受浏览器请求的时候, iis会自动分配请求到不同的服务进程,这时候,如果前后两次请求没有分配到同一个服务进程,那上一次诸如给静态变量赋的值、写入的缓存等在本次请求中得不到了。

    问题解决:

    方法一:采用 sessionState mode="stateServer" 专门开启asp.net的状态服务,让多个服务进程共享Session,配置为:<sessionState mode=”stateServer” stateConnectionString=”tcpip=xxx.xxx.xxx.xxx:xxxx″ timeout=”20″ />

    方法二:采用 sessionState mode="SQLServer" 将会话存入数据库,配置为:<sessionState mode="SQLServer" sqlConnectionString="省略..." cookieless="false" timeout="20" />,注意需要初始化数据库

    方法三:采用memcached来存储Session和缓存对象。

    总结:

          目前项目中用Spring.Net和企业库的Cache都需要升级一下了。

  • 相关阅读:
    java selenium (九) 常见web UI 元素操作 及API使用
    java selenium (六) XPath 定位
    java selenium (八) Selenium IDE 用法
    java selenium (五) 元素定位大全
    一个使用CSocket类的网络通信实例
    揭开链接器的面纱(中)
    揭开连接器的面纱(上)
    深入理解程序的结构
    调试利器GDB(下)
    调试利器GDB(上)
  • 原文地址:https://www.cnblogs.com/sinxsoft/p/2428737.html
Copyright © 2011-2022 走看看