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都需要升级一下了。

  • 相关阅读:
    js分享插件
    json格式
    事物TransactionScope
    CheckBox全选、取消全选
    JQuery中的prop和attr
    [转]javascript之数组操作
    pcntl_fork()函数说明
    从库因为sql错误导致主从同步被中断的问题解决
    查看进程的命令ps
    给mysql创建用户
  • 原文地址:https://www.cnblogs.com/sinxsoft/p/2428737.html
Copyright © 2011-2022 走看看