zoukankan      html  css  js  c++  java
  • Sql server analysis service 通过IIS连接时的最大连接数问题

    做过SSAS项目的大部分人都应该知道SSAS是可以通过在IIS上建立代理站点的方式来建立远程连接的,这样可以绕过连接到SSAS时需要在同一个域环境下通过域用户来验证的问题,这样即使连接到SSAS的客户端应用程序和SSAS服务器不在同一个域下,客户端也可以通过匿名方式连接到SSAS服务器访问多维数据集。但是最近我在开发中遇到一个问题,我开发的客户端应用程序用Adomd.net通过IIS访问SSAS的时候老是报超时错误,错误如下:

    开始我一直以为是AdomdConnection或AdomdCommand的timeout时间设置太短了,所以把timeout的时间改长了,但是发现程序还是报上面的超时异常。最后通过查找原因发现这其实和超时没有什么关系,真正原因是:通过IIS代理连接到SSAS时每个客户端的最大连接数默认是4个,如果你开发的客户端程序在同一时间内通过AdomdConnection连接到IIS的连接数超过了4个,那么就会报上面这个异常。而这个最大连接数的设置实际上是可以通过放在IIS代理站点下的msmdpump.ini文件来修改的。

    用记事本打开msmdpump.ini文件,将<MaxThreadsPerClient>这个XML节点加入到该文件中(msmdpump.ini文件中默认是没有这个XML节点的,不懂的人根本不知道还有这个设置,真是坑啊。。。)并设置值为一个较大的值,这里我设置成了10000,就表示一个客户端的应用程序可以同时启动10000个连接通过IIS代理访问SSAS(如果客户端程序是ASP.NET应用程序,那就是指ASP.NET所在的进程<一般来说也是一个IIS进程>,可以同时向SSAS服务器端的IIS代理申请10000个连接来访问SSAS)。

    这里我将msmdpump.ini的所有配置节点及其默认值都在下面列出来,方便查阅:

    <ConfigurationSettings>
    
    <ServerName>localhost</ServerName>
    
    <SessionTimeout>3600</SessionTimeout>
    
    <ConnectionPoolSize>100</ConnectionPoolSize>
    
    <MinThreadPoolSize>0</MinThreadPoolSize>
    
    <MaxThreadPoolSize>0</MaxThreadPoolSize>
    
    <MaxThreadsPerClient>4</MaxThreadsPerClient>
    
    </ConfigurationSettings>
  • 相关阅读:
    C#Thread学习
    C#winform拖动无边框窗体
    c#winform pictureBox使用url加载图片
    C#Async,await异步简单介绍
    C#字符串拼接的三种方式
    FreeMarker学习(宏<#macro>的使用)
    sublime text 2中Emmet8个常用的技巧
    线程通信之管道流
    程序员必懂:javaweb三大框架知识点总结
    mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/4935494.html
Copyright © 2011-2022 走看看