使用 JMeter 对托管在本地 IIS 中的 WCF 服务进行负载测试

Load testing WCF service hosted in local IIS using JMeter

我的要求是对本地 IIS 服务器中托管的 WCF 服务进行负载测试。我们正在努力提高 WCF 服务的性能。在 PROD 环境中,WCF 服务和使用该服务的桌面应用程序也驻留在同一台机器上。

因此,为了确定 WCF 服务的现有性能基准,我尝试使用 JMeter 在托管服务的同一台机器上通过 运行 对服务进行负载测试。

我正在使用 JMeter 的 HTTP 测试脚本记录器来捕获从桌面应用程序到 WCF 服务的任何请求,这样我以后就可以增加线程数来进行性能测量。

问题是我无法捕获发送到本地 IIS 服务器中托管的服务的任何请求。但是,如果我在单独的服务器中托管相同的服务并从使用桌面应用程序 运行 的机器上执行 Jmeter,则 Jmeter 能够捕获对该 Web 服务器的所有传出请求。

Is that even possible to record requests where service and consuming desktop app both resides in the same machine?

当前配置

我在 Jmeter 代理中使用 8895 作为端口号

在windows中手动设置代理(使用Jmeter中配置的相同端口号)

桌面应用程序配置文件(向本地服务发送请求)

    <bindings>
        <wsHttpBinding>
            <binding name="WSHttpBinding_IPayment" proxyAddress="http://127.0.0.1:8895" useDefaultWebProxy="false" bypassProxyOnLocal="false">                     
                <security mode="None" />
            </binding>            
        </wsHttpBinding>        
    </bindings>
    <client>
      <!--<endpoint address="http://10.2.179.100/PaymentService/Payment.svc " binding="wsHttpBinding"-->                      
      <endpoint address="http://127.0.0.1:88/Payment.svc" binding="wsHttpBinding"          
          bindingConfiguration="WSHttpBinding_IPayment" contract="PaymentServiceReference.IPayment"
            name="WSHttpBinding_IPayment" />
    </client>
</system.serviceModel>

  1. 您可能需要添加 Microsoft Loopback Adapter 以捕获 link-本地流量

  2. 您可能需要设置 system-level HTTP proxy 如:

    netsh winhttp set proxy 127.0.0.1:8895
    

更多信息:How to Run Performance Tests of Desktop Applications Using JMeter