最大实例的核心服务配置节流配置


3

专家,

我正在为最大并发核心服务实例做一个简单的测试。我观察到,我只能创建100个并发实例,并且第101个失败,并在问题底部提到了错误。本练习的目标是控制并发核心服务实例(默认情况下为100,我只是想增加或减少它)。

要创建测试场景中,我写了一个简单的C#CoreService脚本如下:

for (int i = 1; i < 150; i++) 
      { 
// I have used both wsHttp_2013 and netTcp_2013 endpoints 
SessionAwareCoreServiceClient client_Test = new SessionAwareCoreServiceClient("netTcp_2013 "); 
         var testPub = (PublicationData)client_Test.Read("tcm:0-10-1", new ReadOptions()); 
      Console.WriteLine(i + "-" + testPub); 
// I AM NOT CLOSING THE CORE SERVICE CLIENT HERE 
      } 

正如我上面提到的脚本在第101尝试失败。

我可以看到,在位置“{TridionDir} \ bin”中有一个名为“TcmServiceHost.exe.config”的CoreService主机的配置文件。该文件对服务节流

<!-- NOTE: default serviceThrottling settings in .NET 4.5: maxConcurrentSessions=100*<CPU count>, maxConcorrentCalls=16*<CPU count> and maxConcurrentInstances=maxConcorrentCalls+maxConcurrentSessions--> 
      <!-- So, the defaults provided here assume a single CPU; they should be increased in case server CPU utilitization is considered too low. --> 
<serviceThrottling maxConcurrentSessions="100" maxConcurrentCalls="16" /> 

更新在上述配置的值的配置,解决问题与“netTcp” coreservices客户端和我可以控制并发实例的数量,但是这并没有对“wsHttp任何影响“客户端实例。

问:

如果我要最大限度的并发“wsHttp” CoreService客户端的情况下,什么才是我需要做什么?

错误

在事件查看器:

套接字连接被中止。这可能是由于处理您的消息的错误 或远程主机的 接收超时或基础网络资源问题所致。本地套接字 超时时间为'03:00:00'。 远程主机强制关闭现有连接组件:Tridion.ContentManager.CoreService 错误代码:0用户:NT AUTHORITY \ NETWORK SERVICE StackTrace 信息详细信息:at System.Net.Sockets.Socket.Receive(Byte [] buffer ,Int32偏移量,Int32大小,SocketFlags socketFlags) System.ServiceModel.Channels.SocketConnection.ReadCore(Byte []缓冲区, Int32偏移量,Int32大小,TimeSpan超时值,布尔关闭)在 System.ServiceModel.Channels.SocketConnection。 ReadCore(Byte []缓冲区, Int32偏移量,Int32大小,TimeSpan超时值,布尔关闭) System.ServiceModel.Channels.SocketConnection.Read(Byte []缓冲区, Int32偏移量,Int32大小,TimeSpan超时)System.ServiceModel.Channels.ServerSessionPreambleConnectionReader.ServerFramingDuplexSessionChannel.OnOpen在 System.ServiceModel.Channels.CommunicationObject.Open(时间跨度 超时)(时间跨度 超时)在 System.ServiceModel.Channels.CommunicationObject.Open(时间跨度 超时)在 System.ServiceModel.Dispatcher.ChannelHandler。OpenAndEnsurePump()

例外脚本(使用端点:netTcp_2013): enter image description here

例外脚本(使用端点:wsHttp_2013): enter image description here

4

我也注意到,在文件[tridion_home]\webservices\Web.config,还有一个设置将此最大值设置为100

... 
<serviceBehaviors> 
     <behavior name="Tridion.ContentManager.ServiceHost.IISHost.CoreServiceBehavior"> 
      <serviceThrottling maxConcurrentCalls="16" maxConcurrentSessions="100" /> 
      <serviceMetadata httpGetEnabled="true" /> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
... 

是否改变t他的价值结果对你的测试应用程序有什么影响?

我还注意到您链接到的文档(link)“默认值为100 *处理器数量”。

  0

我们将Saurabh提到的maxConcurrentSessions设置为10.核心服务对象实例化后,核心服务仍然没有响应。要么我们有错误的设置,要么100是系统最小(可能是两者)。 22 9月. 172017-09-22 13:23:32

  0

@Paul:Harald正在谈论一个不同的配置。我将运行我的测试更新这些值并更新。 22 9月. 172017-09-22 13:42:29