步骤 4:为负载测试配置 BizTalk Server 环境
本主题提供有关创建BizTalk Server接收位置、接收端口和发送端口的信息,以运行主题中所述的示例代码步骤 1:创建单元测试以将文档提交到BizTalk Server和步骤 3:创建负载测试以同时执行多个单元测试。
为负载测试配置BizTalk Server环境
如主题 步骤 3:创建负载测试以同时执行多个单元测试中所述,负载测试 BTS_Messaging_Step 配置为执行 单元测试 BTSMessaging 和 BTSMessaging2。 反过来,这些单元测试会加载消息 C:\Projects\LoadTest\BTSLoad\TestMessages\TestXmlDocument.xml 的副本,并将其发送到 终结点 BTSMessagingEP 和 BTSMessagingEP2 ,如项目应用程序配置 (app.config) 文件的以下部分所定义:
<-- BTSMessagingEP --><endpoint address=“net.tcp://BizTalk Server Computer:8123/btsloadtest” binding=“netTcpBinding” bindingConfiguration=“netTcpBinding” contract=“System.ServiceModel.Channels.IRequestChannel” name=“BTSMessagingEP” /><endpoint address=“net.tcp://BizTalk Server Computer:8123/btsloadtest“ binding=”netTcpBinding“ bindingConfiguration=”netTcpBinding“ contract=”System.ServiceModel.Channels.IRequestChannel“ name=”BTSMessagingEP2“ />
注意
如前所述,BizTalk Server计算机是实际BizTalk Server计算机名称的占位符,或者,如果BizTalk Server计算机配置为网络负载均衡的成员 (NLB) 群集;BizTalk Server计算机是对应 NLB 虚拟服务器的名称或地址的占位符。
在本示例中,使用了两台BizTalk Server计算机,BizTalk Server Message Box 数据库位于远程SQL Server计算机上。
创建BizTalk Server发送和接收主机
按照BizTalk Server文档主题如何创建新主机中的步骤,为发送端口和发送适配器处理程序创建BizTalk Server“发送”主机。 使用以下属性配置主机:
属性 | 值 |
---|---|
名称 | TxHost |
类型 | In-Process |
允许主机跟踪 | 确保此框未选中。 |
受信任验证 | 确保此框未选中。 |
(仅适用于 32 位版本) | 确保此框未选中。 |
将其用作组中的默认主机 | 确保此框未选中。 |
Windows 组 | 用于控制对此主机和关联主机实例的访问的 Windows 组。 为默认进程内主机创建的窗口组命名<为计算机名称>\BizTalk 应用程序用户 (BizTalk Server安装) 或<域名>\BizTalk 应用程序用户 (多服务器BizTalk Server安装,这需要使用域组) 。 注意:<计算机名称和><域名>是创建组时使用的实际计算机名称或域名的占位符。 如果为此主机创建新组,则它必须具有主题 “主机组”中所述的权限。 |
重复创建“发送”主机时遵循的步骤,以创建“接收”主机。 使用以下属性值配置“Receive”主机:
属性 | 值 |
---|---|
名称 | RxHost |
类型 | In-Process |
允许主机跟踪 | 确保此框未选中。 |
受信任验证 | 确保此框未选中。 |
(仅适用于 32 位版本) | 确保此框未选中。 |
将其用作组中的默认主机 | 确保此框未选中。 |
Windows 组 | 用于控制对此主机和关联主机实例的访问的 Windows 组。 为默认进程内主机创建的窗口组命名<为计算机名称>\BizTalk 应用程序用户 (BizTalk Server安装) 或<域名>\BizTalk 应用程序用户 (多服务器BizTalk Server安装,这需要使用域组) 。 注意:<计算机名称和><域名>是创建组时使用的实际计算机名称或域名的占位符。 如果为此主机创建新组,则它必须具有主题 “主机组”中所述的权限。 |
创建BizTalk Server发送和接收主机的实例
按照BizTalk Server文档主题如何添加主机实例中的步骤创建和启动BizTalk Server“发送”主机的实例。 将“Send”主机的实例配置为在BizTalk Server组中的每个BizTalk Server上运行,并使用以下属性值配置每个主机实例:
属性 | 值 |
---|---|
主机名 | 从“主机名”旁边的下拉列表中选择“TxHost”。 |
Server | 从“服务器”旁边的下拉列表中选择将运行此主机实例的BizTalk Server。 |
登录 | 1. 单击 “配置 ”按钮以显示“ 登录凭据 ”对话框。 2. 在“ 登录凭据 ”对话框中,为指定属性输入以下值: 属性 登录:作为与此BizTalk Server主机关联的 Windows 组成员的用户帐户的名称。 密码: “登录” 文本框中指定的用户帐户的密码。 3. 单击“ 确定” 关闭 “登录凭据 ”对话框。 |
禁止主机实例启动。 | 确保此框未选中。 |
创建主机实例后,右键单击主机实例,然后从上下文菜单中选择“ 开始 ”。
重复创建“发送”主机实例时遵循的步骤,以创建“接收”主机实例。 将“Receive”主机的实例配置为在BizTalk Server组中的每个BizTalk Server上运行,并使用以下属性值配置每个主机实例:
属性 | 值 |
---|---|
主机名 | 从“主机名”旁边的下拉列表中选择“RxHost”。 |
服务器 | 从“服务器”旁边的下拉列表中选择将运行此主机实例的BizTalk Server。 |
登录 | 1. 单击 “配置 ”按钮以显示“ 登录凭据 ”对话框。 2. 在“ 登录凭据 ”对话框中,为指定属性输入以下值: 属性 登录:作为与此BizTalk Server主机关联的 Windows 组成员的用户帐户的名称。 密码: “登录” 文本框中指定的用户帐户的密码。 3. 单击“ 确定” 关闭“登录凭据”对话框。 |
禁止主机实例启动 | 确保此框未选中。 |
创建主机实例后,右键单击主机实例,然后从上下文菜单中选择“ 开始 ”。
创建BizTalk Server接收端口
按照BizTalk Server文档中主题如何创建接收端口中的步骤创建 One-Way 接收端口。 创建接收端口时,将所有属性保留为默认值,下表中另有说明除外:
属性 | 值 |
---|---|
General\Name | BTSLoadTestMessaging.OneWay.ReceivePort |
常规\端口类型 | 单向 |
常规\身份验证 | 无身份验证 |
常规\为失败的消息启用路由 | 确保此框未选中。 |
General\Description | 留空 |
入站映射 | 无 |
跟踪 | 确保所有框均未选中。 |
接收位置 | 单击“新建”,此时将显示“接收位置属性”对话框,应按以下部分“创建BizTalk Server接收位置”中所述进行配置。 |
创建BizTalk Server接收位置
在创建接收端口时显示的“接收位置属性”对话框中,应用指定的属性值BizTalk Server接收端口:
属性 | 值 |
---|---|
姓名: | BTSLoadTest.Messaging.OneWay.WCF-Customer.ReceiveLocation |
接收处理者: | RxHost |
接收管道: | PassThruReceive |
说明: | 将此留空 |
键入: | 从下拉列表中选择 “WCF-Custom ”,然后单击“ 配置 ”按钮,此时将显示“ WCF-Custom Transport Properties ”对话框,该对话框应按以下部分 配置 WCF-Custom 接收传输中所述进行配置。 |
配置 WCF-Custom 接收传输
在创建BizTalk Server接收位置时显示的 WCF 自定义传输属性对话框中,将所有属性保留为默认值,下表中未说明:
属性 | 值 |
---|---|
常规\地址 (URI) | net.tcp://localhost:8123/btsloadtest |
Binding\Binding Type | netTcpbinding |
Binding\NetTcpBindingElement\listenBacklog | 400 |
Binding\NetTcpBindingElement\maxConnections | 400 |
Binding\Security\NetTcpSecurityElement\mode | 无 |
Behavior\ServiceBehavior\serviceThrottling\ServiceThrottlingElement 注意: 若要将 serviceThrottling 行为添加到行为列表,请右键单击“ServiceBehavior”,单击“ 添加扩展”,从行为扩展列表中选择 “serviceThrottling ”,然后单击“ 确定”。 | 将 ServiceThrottlingElement 属性设置为以下值: - maxConcurrentCalls 400 - maxConcurrentInstances 400 - maxConcurrentSessions 400 |
Behavior\ServiceBehavior\serviceDebug\ServiceDebugElement 注意: 若要将 serviceDebug 行为添加到行为列表,请右键单击“ServiceBehavior”,单击“ 添加扩展”,从行为扩展列表中选择“ serviceDebug ”,然后单击“ 确定”。 | 将 ServiceDebugElement 属性列表保留其默认值 (空) ,以下属性除外,应将其更改为 True 值: - httpHelpPageEnabled 真 - httpsHelpPageEnabled 真 - includeExceptionDetailInFaults 真 |
单击“ 确定 ”关闭“WCF-Custom 传输属性”对话框,然后再次单击“ 确定 ”关闭“接收位置属性”对话框。
创建BizTalk Server发送端口
按照BizTalk Server文档中主题如何创建发送端口中的步骤创建静态单向发送端口。 创建 Send 端口时,将所有属性保留为默认值,下表中另有说明除外:
属性 | 值 |
---|---|
General\Name | BTSLoadTest.Messaging.Send.WCF-Custom |
General\Send 处理程序 | TxHost |
General\Send 管道 | PassThruTransmit |
Filters\Name | BTS.ReceivePortName |
Filters\Operator | == |
Filters\Value | BTSLoadTest.Messaging.OneWay.ReceivePort |
Filters\Group by | 注意:如果这些属性配置了正确的值,则筛选器应显示为BTS.ReceivePortName == BTSLoadTest.Messaging.OneWay.ReceivePort “发送端口属性”对话框的“筛选器”页底部。 由于应用此筛选器,此发送端口将订阅BizTalk Server通过名为 BTSLoadTest.Messaging.OneWay.ReceivePort 的接收端口接收的任何消息。 |
跟踪 | 确保所有框均未选中。 |
General\Type | 从下拉列表中选择 “WCF-Custom ”,然后单击“ 配置 ”按钮,此时将显示“ WCF-Custom Transport 属性 ”对话框,该对话框应按照以下部分配置 WCF-Custom 发送传输中所述进行配置。 |
配置 WCF-Custom 发送传输
在创建BizTalk Server发送端口时显示的 WCF 自定义传输属性对话框中,将所有属性保留为默认值,下表中未说明:
属性 | 值 |
---|---|
常规\地址 (URI) | net.tcp://<Computer Name>:2001/TCP1 Important:<Computer Name> 是用于托管 IndigoService.exe 的实际计算机名称的占位符,该名称旨在使用通过 WCF 发送的消息。 由于 IndigoService.exe 所需的资源很少,因此在用于BizTalk Server组数据库的SQL Server计算机上运行 IndigoService.exe 通常是完全可以接受的。 |
Binding\Binding Type | customBinding |
与大多数 WCF-Custom 绑定类型一样, customBinding 绑定类型会公开多个属性,这些属性应设置为以下值:
在 “绑定 ”部分下,有一个 CustomBindingElement 属性,其中包含关联的 “配置” 部分。 将 CustomBindingElement 属性的“配置”部分中的所有值保留其默认值。
然后在 “CustomBindingElement”下 右键单击“ textMessageEncoding ”,然后选择“ 删除扩展 (Del) ”。 同样,右键单击“ httpTransport ”,然后选择“ 删除扩展 (Del) 。
现在右键单击“ CustomBindingElement ”,然后选择“ 添加扩展 Ins ”以显示 “选择绑定元素扩展 ”对话框。
选择 binaryMessageEncoding ,然后单击 “确定” 添加 binaryMessageEncoding 元素扩展。 重复这些步骤以显示“ 选择绑定元素扩展 ”对话框,向下滚动可用元素扩展的列表,直到看到 tcpTransport 元素扩展,选择 tcpTransport 并单击“ 确定”。
在 CustomBindingElement 下选择 tcpTransport 元素,并在 tcpTransport 的“配置”部分中,将所有属性保留为默认值,下表中未说明:
属性 值 connectionBufferSize 2097152 maxBufferSize 2097152 maxPendingAccepts 400 maxPendingConnections 400 listenBacklog 400 maxBufferPoolSize 2097152 maxReceivedMessageSize 2097152 在 tcpTransport 元素下,选择 ConnectionPoolSettings 元素,并将除 maxOutboundConnectionsPerEndpoint 属性之外的所有属性保留为默认值,该属性应更改为值 400。
单击“ 确定 ”关闭“WCF-Custom 传输属性”对话框,然后再次单击“ 确定 ”以关闭“BTSLoadTest.Messaging.Send.WCF-Custom - Send Port Properties”对话框。
配置计算机以使用BizTalk Server发送端口发送的消息
如前所述,IndigoService.exe 旨在使用通过 WCF 发送的消息。 它包含以下 4 个文件,它们应位于要运行 IndigoService.exe 的计算机上:
\IndigoService\bin\Release\IndigoService.exe
\IndigoService\bin\Release\IndigoService.exe.config
\IndigoService\bin\Release\Response.xml
\IndigoService\bin\Release\StartIndigoService.bat
然后,通过双击 StartIndigoService.bat 开始 IndigoService.exe。 IndigoService.exe 使用发送到 IndigoService.exe.config 文件中指定的终结点的消息:
<endpoint address=“net.tcp://localhost:2001/TCP1” binding=“netTcpBinding” bindingConfiguration=“Binding1” name=“endpoint1” contract=“IndigoService.IServiceTwoWaysVoidNonTransactional” />
这就是使用地址 (URI) net.tcp://<Computer Name>:2001/TCP1 配置发送端口地址的原因
由于 IndigoService.exe 所需的资源很少,因此在用于BizTalk Server数据库的SQL Server计算机上运行 IndigoService.exe 通常是完全可以接受的。
禁用BizTalk Server组的跟踪和限制
为了确定系统的绝对最大可持续吞吐量,应在开始负载测试之前禁用消息跟踪和限制。 可以通过以下步骤使用 BizTalk Server 管理控制台完成此操作:
启动 BizTalk Server 管理控制台。 单击“开始”,指向“所有程序”,指向“BizTalk Server 2010”,然后单击“BizTalk Server管理”。
在“BizTalk Server管理”下,选择 BizTalk 组(如果已列出或未列出),右键单击“BizTalk Server管理”,选择“连接到现有组”,输入位于“BizTalk 组”BizTalk Server管理数据库旁边的SQL Server名称SQL Server name:,在“数据库名称”旁输入 BizTalk 组的管理数据库名称:,然后单击“确定”。
右键单击 BizTalk 组节点,然后选择 “设置” 以显示 BizTalk 设置仪表板。
单击以在 BizTalk 设置仪表板的左侧窗格中选择 “主机 ”。
单击“ 主机 ”旁边的下拉列表,选择将在性能测试期间使用的主机之一。
将属性保留为默认值,下表中未说明:
属性 值 常规\将跟踪数据移动到 DTA DB 如果选中此框,请取消选中。 仅限常规\32 位 如果选中此框,请取消选中。 常规\轮询间隔\消息传送 设置为值 20000000 常规\轮询间隔\业务流程 设置为值 20000000 基于资源的限制\进程内消息 设置为值 10000 基于资源的限制\内部消息队列大小 设置为值 10000 DB 中基于资源的限制\消息计数 设置为值 0 基于资源的限制\内存使用情况\进程虚拟 设置为值 0 基于速率的限制\Publishing\Throttling 替代 设置为“不限制” 基于速率的限制\传递\限制替代 设置为“不限制” 对将在性能测试过程中使用的每个主机重复步骤 6 中概述的过程。
单击以在 BizTalk 设置仪表板的左侧窗格中选择 “主机实例 ”。
单击“ 主机实例: ”旁边的下拉列表,选择将用于性能测试的主机实例之一。
将属性值保留为默认设置,但将 .NET CLR 最大工作线程 数更改为 值 100 ,并将 .NET CLR 最小工作线程 更改为 值 25。
对将在性能测试过程中使用的每个主机实例重复步骤 10 中概述的过程。
尽管禁用跟踪和限制并不代表在生产方案中应执行的操作,但由于从性能角度来看,禁用这些操作非常昂贵,因此有必要找出BizTalk Server环境的真正最大可持续吞吐量 (MST) 。 这使测试人员能够清楚地看到已应用于环境的任何性能调整的影响。 当然,可以提出不应禁用跟踪,如果从一开始就知道BizTalk Server应用程序将需要跟踪,则应启用跟踪。 话又说, 为了进行性能测试,应尽一切努力禁用限制。 限制对于防止BizTalk Server由于生产环境中的负载过大而“翻倒”非常有用。 但是,你不希望在性能测试期间启用限制,因为从性能的角度来看,限制成本很高,并且如果在负载测试期间启用限制,则很难确定BizTalk Server应用程序实际可以实现的性能级别。 接下来的主题介绍如何执行步骤负载测试,以将BizTalk Server环境推送到 MST 之外,然后通过持续负载测试缩减到实际的 MST。 如果启用了限制,则几乎不可能将 BizTalk 环境推送到 MST 之外,这样就可以发现真正的 MST 是什么。