Forum Discussion

SmartBear_Suppo's avatar
SmartBear_Suppo
SmartBear Alumni (Retired)
12 years ago

Known Bug: soapUI 4.5.0 only handles 2 simultaneous requests

This is a bug [SOAPUI-3947][/font:1gbesjsi] in soapUI 4.5.0 (which therefore also affects the soapUI Runner in loadUI 2.0.0).

It will be fixed in soapUI 4.5.1 (and in soapUI nightly builds, starting tonight) and loadUI 2.0.1.


There's also a workaround for this:
  1. In your soapUI project's Load Script (Open project window, click the Overview tab and open the Load Script panel), enter the following:

    com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport.httpClient.connectionManager.maxTotal = 2000
    com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport.httpClient.connectionManager.defaultMaxPerRoute = 2000


  2. Save your project (right click on the project in the Navigator panel and click Save).

  3. Reload your project (right click on the project in the Navigator panel and click Reload).

1 Reply

  • Since this is my first post here I would like to thank soapUI team for the best web service test tool, not even counting it's also open source!!! Thank you, and keep up the fantastic work

    Now, about this bug.

    Funny but I actually kind of fixed it 6 weeks ago on my local soapUI installation. It took 2 lines of code on the right place to use the configuration already existing in soapUI global settings (soapUI Preferences -> HTTP Settings -> Max Connections per Host). It works great and soapUI restart is not required when changing the configuration.

    Here's what I did, I added the 2 lines in SoapUIMultiThreadedHttpConnectionManager.IdleConnectionMonitorThread.run(). This is how run() looks like right now:


    @Override
    public void run()
    {
    try
    {
    while (!shutdown)
    {
    // patch by eSandrei
    // defaults are 2/20 connections which is a bottleneck for a load test (even if you run the load with 100 threads they will all
    // wait in line for the 2 connections)
    // changing to use SoapUI HTTP preferences (I hardcoded defaults 500/2000 as in other classes but these should be centralized)
    // stubbed here and not in the outer class constructor to apply preferences without restarting SoapUI
    // also, didn't choose request/releaseConnection because it is called too often, this one looks
    // like it's called only when connMng is idle or every 5s
    ((ThreadSafeClientConnManager)connMgr).setDefaultMaxPerRoute((int)SoapUI.getSettings().getLong(HttpSettings.MAX_CONNECTIONS_PER_HOST, 500L));
    ((ThreadSafeClientConnManager)connMgr).setMaxTotal((int)SoapUI.getSettings().getLong(HttpSettings.MAX_TOTAL_CONNECTIONS, 2000L));

    synchronized (this)
    {
    wait(5000);
    // Close expired connections
    connMgr.closeExpiredConnections();
    // Optionally, close connections
    // that have been idle longer than 30 sec
    connMgr.closeIdleConnections(30, TimeUnit.SECONDS);
    }
    }
    }
    catch (InterruptedException ex)
    {
    // terminate
    }
    }