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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2014-11-04 ASP.NET Response.Redirect 丢失 Session的问题(作废,仅供参考)
2014-11-04 Iframe和Frame中实现cookie跨域的方法(转载)