为什么连接没有在我的 iSeries/ASP.NET MVC 4 应用程序中重用?

2024-04-29

我们正在 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 以及我们的应用程序的性能。代码库是exactly与 2008 年 32 位服务器上的情况相同。我们将目标平台设置为“任何 CPU”,并将 IIS 中的“启用 32 位应用程序”设置为 True。我们在本月早些时候尝试升级到这些服务器,重置 IIS 并没有像预期那样自动终止盒子上的连接,并且在我们完全恢复到旧服务器之前不会创建任何新连接。

看起来它似乎并没有建立已经建立的联系并不断创建新的联系。有谁知道在 iSeries 连接池升级到 32 位到 64 位时我们是否错过了一个步骤?


问题回顾:将 ASP.NET MVC 4 Web 应用程序从 32 位 Windows 2008 服务器场移动到 Windows 2008 R2 64 位服务器时,QZDASOINITIBM i 创造的就业机会从约 2,000 个跃升至约 200,000 个。代码库没有改变,唯一改变的是执行环境。

一些相关的事情需要了解QZDASOINIT作业...默认情况下,这些作业是在子系统中创建的QUSRWRK(尽管它们也可能出现在QSYSWRK and QSERVER if the QUSRWRK当请求 ODBC 连接时子系统不活动)。QUSRWRK配置为创建其中之一QZDASOINIT子系统一启动就开始工作。如果发出 ODBC 请求但没有QZDASOINIT职位空缺,还有2个QZDASOINIT工作将开始。每个QZDASOINIT作业在结束之前将处理 200 个 ODBC 请求。所有这些默认值以及更多内容都可以使用以下命令进行更改CHGPJE or CHGSBSD命令。

QZDASOINIT工作有一个或两个“类别”。可以使用这些类来微调这些作业的执行。

您可以找到有关您当前活跃的信息QZDASOINIT工作通过使用DSPACTPJ命令。

资源:

CHGPJE – 更改预启动作业条目 http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Fcl%2Fchgpje.htm

CHGSBSD – 更改子系统描述 http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Fcl%2Fchgsbsd.htm

CRTCLS – 创建类 http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Fcl%2Fcrtcls.htm

DSPACTPJ – 显示活动的预启动作业 http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Fcl%2Fdspactpj.htm

ENHOSTSVR – 终端主机服务器 http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Fcl%2Fendhostsvr.htm

ENDSBS – 末端子系统 http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Fcl%2Fendsbs.htm

WRKCLS – 与类一起工作 http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Fcl%2Fwrkcls.htm

QZDASOINIT 作业的性能注意事项 http://www.linkedin.com/groups/Performance-considerations-QZDASOINIT-jobs-59314.S.123804107

可能的“解决方案”#1:

在 Windows 端的连接字符串中,更改MaximumPoolSize=-1 to MaximumPoolSize=XXX其中 XXX 是一些数字,它允许 ASP.NET 应用程序正常运行,但不会降低 IBM i 上的性能。我建议使用 2,000,因为当应用程序在 32 位服务器上运行时,这似乎是可以忍受的。

可能的“解决方案”#2:

让 IBM i 管理员对 IBM i 进行一些更改 - 因为您知道服务器场的 IP 地址范围,所以管理员可以设置一个新的子系统,该子系统除了为您的应用程序 ODBC 连接提供服务外什么也不做。 更改允许的最大数量QZDASOINIT工作使用CHGPJE命令 – 再次,我建议从 2,000 开始,并根据需要进行调整,以满足应用程序的性能和对 IBM i 的影响。如果有必要,管理员可以设置一个作业来杀死所有QZDASOINIT新子系统中的作业 – 通过结束该子系统 (ENDSBS) 或ENDHOSTSVR SERVER(*DATABASE) ENDACTCNN(*DATABASE)(我会终止该子系统,但您的管理员会知道什么最适合您的环境)。

其他一些建议本身不是解决方案,但可能会有所帮助:

限制 ASP.NET 应用程序中并发执行的线程数。显然这不是一件快速或容易的事情,而是要在应用程序的下一次迭代的注释中添加一些内容。

改变MaximumUseCount=100匹配您使用的任何使用计数QZDASOINIT jobs.

我在“解决方案”周围加上引号,因为虽然它们可能允许您将应用程序迁移到新环境,但它们实际上并不能解决问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么连接没有在我的 iSeries/ASP.NET MVC 4 应用程序中重用? 的相关文章

随机推荐

  • 如何在 R 中对多维面板数据运行回归

    我需要对面板数据进行回归 它有 3 个维度 年份 公司 国家 地区 例如 year comp count value x value y 2000 A USA 1029 0 239481 2000 A CAN 2341 4 129333 2
  • 将应用程序委托定义为常量?

    我正在尝试编写 iPhone 应用程序 但遇到了问题 我已经在类中声明了一个常量作为应用程序委托 define ikub iKubMobileAppDelegate UIApplication sharedApplication deleg
  • 使用 Twilio 进行调用时是否可以传递自定义参数?

    我正在使用 Twilio PHP 库 但问题实际上与语言无关 我尝试做类似以下的事情 client new Services Twilio MyAccountSID My auth token client gt account gt ca
  • Qt 5.4/Qml:防止绑定循环

    我有一个全局单例 设置 它保存应用程序设置 当我尝试运行以下代码时 我得到一个QML CheckBox Binding loop detected for property checked CheckBox checked Settings
  • 未找到命令/使用自动测试通过“捆绑安装”安装缺少的 gem 二进制文件

    我对 RoR 完全陌生 我正在关注迈克尔 哈特尔的书 我无法运行自动测试 请提出问题所在以及解决方案 当我在 Rails 项目目录中的命令行运行 自动测试 时 我得到以下信息 bash autotest command not found
  • 信号器 CORS 问题

    在我的服务器端 我使用带有信号器的 Web api 2 在我的客户端 我使用的是 angularjs 这是我启动信号连接时的 http 请求 gt GET gt http example com signalr negotiate clie
  • 如何用c++编写可移植的代码?

    编写可移植代码时应该记住哪些事情 由于我是一个c 初学者 所以我想从一开始就练习它 Thanks 学习使用标准库 读书 例如this one http www mindview net Books TICPP ThinkingInCPP2e
  • BashOperator 为其他 PythonOperators 中使用的库引发 ImportError

    我的 dag 构建器模块中有一组任务 该模块使用 Airflow 中全球使用的 Python 运算符 我正在 kubernetes 上使用 docker 部署气流 任务失败并显示错误消息 no module named pandas 使用
  • Mysql乘法查询

    我有一个名为 产品 的表 其中包含一个名为 价格 的字段 我只想将每种产品的价格加倍 请您帮我提供一条可以在 PHP myAdmin 中运行的 SQL 语句 update products set price price 2
  • 如何使用 CodeIgniter 计算 MySQL 中给定行之前的行数?

    简单来说 如何计算某一行之前有多少行 我使用的是增量 ID 但行是随机删除的 因此仅检查 ID 是行不通的 比如说 如果我有 30 行 并且我根据名称 或任何实际内容 选择了一行 那么在该行之前有多少行 它可以是 16 1 12 或任何值
  • Winsock / BSD 套接字 - 接受目标 IP 不同于本地 IP 的 TCP 连接

    我将 LAN 上的一些传出 TCP 流量 最终也是 UDP 转发到本地 透明 代理服务器 然后再将其发送到互联网上 数据包似乎转发正确 我可以在 Wireshark 中看到 SYN 问题是绑定到端口X的accept 不接受与目标端口X的连接
  • 如何在C++中构建复合for循环?

    是另一个fora 的计数器部分 第三部分 允许循环for环形 在我尝试优雅地编写代码来生成直角三角形 我写了这个 但它无法编译 include
  • 如何将参数传递给 OLE 自动化对象(例如 MS Word)

    这主要是一个Delphi语法相关的问题 调用 OLE 对象的方法时 我需要将参数设置为 True 我需要在Word Automation中设置 这是来自词参考 http support microsoft com kb 285885 en
  • PHP APC 潜在的缓存猛击避免了密钥

    我在尝试使用时收到此错误apc store 我用谷歌搜索了一下 发现这是APC定时炸弹错误并看到了一些建议添加的修复apc slam defense Off 到 php ini 我需要知道这是否是由于编程错误而发生的 如果是 如何修复它 这
  • 动态或在构建时连接和缩小 JavaScript - ASP.NET MVC

    作为这个问题的扩展这里在用户控件中链接 JavaScript 库 https stackoverflow com questions 885990 linking javascript libraries in user controls
  • 请求响应后正文中出现奇怪的字符

    我正在使用 NodeJS 和 Request 来发布 JSON 并获取其中包含数据的结果 我使用 Postman 设置此请求 并获取完全可读的 JSON 数据 d type Qvision WoningenModule Lib aanbod
  • 使用 Boost.spirit 解析简单的重复文本宏

    我正在学习如何使用 Boost Spirit 库来解析字符串 这似乎是一个非常好的工具 但也很困难 所以 我想解析一个字符串 其中一些单词用 并将它们放入字符串向量中 这是一个例子 word1 word2 word3 这是一个简单的任务 我
  • 具有活动样式的 React router 无法按照我对根 URL 的要求工作

    我在主菜单中使用了这个 NavLinks 问题是当 测试 汽车 链接被点击 Test 链接也正在应用样式 我相信这是因为 Test 假设是其他链接的根 所以这是有道理的 但我想要 Test 应用活动样式时 链接也可以像其他链接一样工作 所以
  • Zip 文件是使用 Windows 路径分隔符创建的

    我使用下面的代码创建一个 zip 文件 Zip 已正确创建 然后在我的程序中 我尝试从此文件中获取 zip 条目 如果我打印一个 zip 条目名称 我会得到 Windows 路径分隔符 例如 a b c 但我需要这样a b c 我还没有发布
  • 为什么连接没有在我的 iSeries/ASP.NET MVC 4 应用程序中重用?

    我们正在 Windows 2008 服务器场上运行 MVC 4 Web 应用程序 我们一直在尝试将服务器场升级到 Windows 2008 R2 64 位服务器 但在 iSeries 运行 V7R1 上遇到了连接池问题 我们经常调用 DB2