We are running into performance issues with our website. We’ve setup a test environment to determine where the problems occur. The test environment consist of 3 servers. (2 for the front-end (website) en 1 for the back-end (wcf webservices)). The specs of the servers:
Website 1: Intel Xeon e5410 (2x) 8GB ram
Website 2: Intel Xeon x3323 4GB ram
Webservice: Intel Xeon e5410 (2x) 8GB ram
The webservices are using net.tcp endpoints With Jmeter we’re sending 75 concurrent request to 1 page on website 1. The responsetimes keep increasing around 5 sec and then leveling off. When we go to website 1 with the browser, the website has high response times. When we go to website 2, same page, the website is fast. With netstat –t we can see that website 1 only has around 30 connections to the webservice. The endpoint binding in the web.config on the website is as follow:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<bindings>
<netTcpBinding>
<binding name="netTCPBinding" maxReceivedMessageSize="999999999" sendTimeout="00:03:00" closeTimeout="00:03:00" receiveTimeout="00:03:00" maxConnections="65355">
<readerQuotas maxDepth="32" maxStringContentLength="5242880" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None"></security>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://192.168.1.124:21130/ContentService.svc" binding="netTcpBinding" bindingConfiguration="netTCPBinding" contract="ContentWS.IContentService" name="Default1">
</endpoint>
<endpoint address="net.tcp://192.168.1.124:21131/Service.svc" binding="netTcpBinding" bindingConfiguration="netTCPBinding" contract="PrijsvrijWS.IService" name="Default">
</endpoint>
</client>
</system.serviceModel>
This is the config of the webservice:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="netTCPBinding" maxReceivedMessageSize="999999999" sendTimeout="00:03:00" closeTimeout="00:03:00" receiveTimeout="00:03:00" maxConnections="65355">
<readerQuotas maxDepth="32" maxStringContentLength="5242880" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None"></security>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="ajaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="serviceWithMetadata">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentCalls="100" maxConcurrentInstances="100" maxConcurrentSessions="100" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="false" />
<services>
<service behaviorConfiguration="serviceWithMetadata" name="WcfService.Service">
<endpoint address="net.tcp://localhost:21131/Service.svc" binding="netTcpBinding" bindingConfiguration="netTCPBinding" name="Default" contract="WcfService.IService" />
</service>
<service behaviorConfiguration="serviceWithMetadata" name="WcfService.ContentService">
<endpoint address="net.tcp://localhost:21130/ContentService.svc" binding="netTcpBinding" bindingConfiguration="netTCPBinding" name="Default" contract="WcfService.IContentService" />
</service>
</services>
</system.serviceModel>
We tried servicethrottling, but it doesn’t seem to have effect. During the test CPU usage on the servers is as follow:
Website 1: around 60%, with max 90%
Website 2: 1%
Webservice: around 25%, with max 50%
Are we running at the max of the website 1 or are we missing some settings?