为什么我的iSeries / ASP.NET MVC 4应用程序中没有重复使用连接
我们正在
Windows 2008服务器场上运行一个MVC 4 Web应用程序.我们一直在尝试将我们的服务器场升级到Windows 2008 R2 64位服务器,但在iSeries(运行V7R1)上遇到连接池问题.我们经常调用DB2 java存储过程,并启用连接池以减少建立连接所需的时间.以下是我们使用的连接字符串的示例.
< add name =“DB2”connectionString =“ConnectionTimeout = 45; Pooling = true; MinimumPoolSize = 1; MaximumPoolSize = -1; MaximumUseCount = 100; CheckConnectionOnOpen = true; DataSource = XXX; Naming = SQL; DataCompression = True; UserID = username; password = pwd; DefaultCollection = XXX“/> 自从进入2008R2以来,iSeries的连接数量(QZDASOINIT作业)稳步增加,从而伤害了iSeries和我们的应用程序的性能.代码库与2008年32位服务器上的代码基本完全相同.我们为Any CPU设置了目标平台,并在IIS中将“启用32位应用程序”设置为True.我们试图在本月早些时候升级到这些服务器,重置IIS并没有自动杀死盒子上的连接,因为它应该是这样,不会创建任何新的连接,直到我们完全恢复到旧的服务器. 几乎看起来它并没有拾起已经建立的连接并且不断创建新的连接.有人知道如果在使用iSeries进行连接池升级到32位到64位时,我们错过了一个步骤? 解决方法
问题的回顾:将ASP.NET MVC 4 Web应用程序从32位Windows 2008服务器场移动到Windows 2008 R2 64位服务器时,在我的IBM上创建的QZDASOINIT作业的数量从2000左右跳到了大约20万.代码库不变,唯一改变的是执行环境.
有关QZDASOINIT作业的一些相关内容…默认情况下,这些作业是在子系统QUSRWRK中创建的(尽管如果在请求ODBC连接时QUSRWRK子系统不活动,它们也可以在QSYSWRK和QSERVER中进行裁剪). QUSRWRK配置为在子系统启动后立即创建其中一个QZDASOINIT作业.如果做出了ODBC请求,并且没有QZDASOINIT作业可用,还会再启动另外两个QZDASOINIT作业.每个QZDASOINIT作业将在结束之前处理200个ODBC请求.所有这些默认值和更多可以使用CHGPJE或CHGSBSD命令进行更改. QZDASOINIT作业有一个或两个“类”.这些工作的执行可以使用这些类进行微调. 您可以使用DSPACTPJ命令找到有关当前活动的QZDASOINIT作业的信息. 资源: CHGPJE – Change Prestart Job Entry CHGSBSD – Change Subsystem Description CRTCLS – Create Class DSPACTPJ – Display Active Prestart Jobs ENDHOSTSVR – End Host Server ENDSBS – End Subsystem WRKCLS – Work with Classes Performance considerations with QZDASOINIT jobs 可能的“解决方案”#1: 在Windows端的连接字符串中,将MaximumPoolSize = -1更改为MaximumPoolSize = XXX,其中XXX是允许您的ASP.NET应用程序运行良好但不降低IBM i性能的某个数字.我建议使用2,000,因为当应用程序在32位服务器上运行时,似乎是可以忍受的. 可能的“解决方案”#2: 让IBM i管理员在IBM i上进行一些更改 – 由于您知道服务器场的IP地址范围,管理员可以设置一个新的子系统,只能为应用程序ODBC连接提供服务. 一些其他建议,不是解决方案本身,但可能有帮助: 限制ASP.NET应用程序中并发执行线程的数量.显然不是一个快速或容易的事情要做,但要放在应用程序的下一次迭代的笔记中. 更改MaximumUseCount = 100以匹配您使用QZDASOINIT作业的任何用户数. 我引用了“解决方案”,因为他们可能允许您将应用程序移动到新环境中,但实际上并不解决问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 请参阅控制器中的验证摘要
- 单元测试 – 使用Owin为MVC 5控制器创建单元测试
- 将ASP.NET标识存储库移动到EF Sql数据库
- asp.net-mvc – 控制台应用程序CSHTML智能感知和绑定?
- asp.net-mvc – MVC 5中的Web API属性路由异常:该对象尚未
- asp.net-mvc – 如何继承ASP.NET MVC控制器并仅更改视图?
- asp.net-mvc – 启用relaxedUrlToFileSystemMapping以允许以
- asp.net-mvc-5 – 我应该如何从JsonResult控制器返回404?
- asp.net-mvc – 如何覆盖视图布局声明
- asp.net – 看起来像链接的按钮
- asp.net-mvc – ASP.NET MVC:与非移动视图一起使
- ASP.NET 服务器部署IIS程序池进程标示配置要和SQ
- ASP.NET自定义控件:何时调用LoadPostData()?
- asp.net-mvc – 如何将名为“file []”的已发布数
- asp.net – 有没有一种简单的方法可以向DataBoun
- asp.net-mvc – Href和Url.Content有什么区别?
- asp.net – 在visual studio中的同一解决方案中运
- asp.net – 如何在web.config中定义using语句?
- asp.net – 如何关闭radwindow管理器窗体服务器端
- asp.net-mvc-3 – 具有最佳实践的示例N层ASP.NET