You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by Krister Nilsson <kr...@pensionsmyndigheten.se> on 2022/12/09 13:52:15 UTC

Address already in use with Concurrency Thread Group

Hi!

Not sure if this group also answers questions about plugins, but it's worth a try.

I am using the Concurrency Thread Group (v 2.10 of the downloaded zip) and even when I configure it to increase in steps of two(2) threads I get the stack trace below for a bunch of requests. It happens already when running with 10 threads and 1200 tpm and it seems very much like it starts a few seconds BEFORE the plugin is about to increase the number of threads with (in this case) two more threads. Anyone who has seen the same problem and has a solution?

java.net.BindException: Address already in use: connect
          at java.net.DualStackPlainSocketImpl.connect0(Native Method)
          at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
          at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
          at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
          at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
          at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
          at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
          at java.net.Socket.connect(Socket.java:607)
          at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)
          at org.apache.jmeter.protocol.http.sampler.hc.LazyLayeredConnectionSocketFactory.connectSocket(LazyLayeredConnectionSocketFactory.java:92)
          at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
          at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$JMeterDefaultHttpClientConnectionOperator.connect(HTTPHC4Impl.java:326)
          at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374)
          at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
          at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
          at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
          at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
          at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
          at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
          at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
          at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:850)
          at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:561)
          at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)
          at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1282)
          at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1271)
          at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:627)
          at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:551)
          at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:490)
          at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257)
          at java.lang.Thread.run(Thread.java:750)

With the normal vanilla Jmeter Thread Group the same does NOT occur even for 20 threads.

Med vänlig hälsning
Krister Nilsson
____________________________________________________________

Krister Nilsson / översteprest, prestandatest

IT Fond konto och teknisk plattform
Telefon direkt 010-454 21 97, mobil 072-210 21 97
krister.nilsson@pensionsmyndigheten.se<ma...@pensionsmyndigheten.se>

Pensionsmyndigheten,
Telefon vxl 0771-771 771, fax 08-658 13 00, www.pensionsmyndigheten.se<http://www.pensionsmyndigheten.se/>


P Överväg miljöpåverkan innan du skriver ut detta e-brev.


SV: Address already in use with Concurrency Thread Group

Posted by Krister Nilsson <kr...@pensionsmyndigheten.se>.
Thanks Dmitri!

I don’t think it has anything to do with the number of threads as such, since we have other tests using many more threads. I will investigate your other suggestion about port recycle time since it seems like it could have to do with reallocation of the same ports. Are you sure it has nothing to do with how the plugin selects ports when it is time to increase?

BR
/Krister

Från: Dmitri Tikhanski <gl...@live.com>
Skickat: den 12 december 2022 08:34
Till: JMeter Users List <us...@jmeter.apache.org>; Krister Nilsson <kr...@pensionsmyndigheten.se>
Ämne: Re: Address already in use with Concurrency Thread Group

Krister Nilsson wrote:

Hi!



Not sure if this group also answers questions about plugins, but it's worth a try.



I am using the Concurrency Thread Group (v 2.10 of the downloaded zip) and even when I configure it to increase in steps of two(2) threads I get the stack trace below for a bunch of requests. It happens already when running with 10 threads and 1200 tpm and it seems very much like it starts a few seconds BEFORE the plugin is about to increase the number of threads with (in this case) two more threads. Anyone who has seen the same problem and has a solution?



java.net.BindException: Address already in use: connect

          at java.net.DualStackPlainSocketImpl.connect0(Native Method)

          at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)

          at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

          at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)

          at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)

          at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

          at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

          at java.net.Socket.connect(Socket.java:607)

          at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)

          at org.apache.jmeter.protocol.http.sampler.hc.LazyLayeredConnectionSocketFactory.connectSocket(LazyLayeredConnectionSocketFactory.java:92)

          at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)

          at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$JMeterDefaultHttpClientConnectionOperator.connect(HTTPHC4Impl.java:326)

          at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374)

          at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)

          at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)

          at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)

          at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)

          at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)

          at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)

          at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)

          at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:850)

          at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:561)

          at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)

          at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1282)

          at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1271)

          at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:627)

          at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:551)

          at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:490)

          at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257)

          at java.lang.Thread.run(Thread.java:750)



With the normal vanilla Jmeter Thread Group the same does NOT occur even for 20 threads.



Med vänlig hälsning

Krister Nilsson

____________________________________________________________



Krister Nilsson / översteprest, prestandatest



IT Fond konto och teknisk plattform

Telefon direkt 010-454 21 97, mobil 072-210 21 97

krister.nilsson@pensionsmyndigheten.se<ma...@pensionsmyndigheten.se>



Pensionsmyndigheten,

Telefon vxl 0771-771 771, fax 08-658 13 00, www.pensionsmyndigheten.se<http://www.pensionsmyndigheten.se><http://www.pensionsmyndigheten.se/><http://www.pensionsmyndigheten.se/>





P Överväg miljöpåverkan innan du skriver ut detta e-brev.




Indeed questions about plugins should go to JMeter Plugins Support Forum<https://groups.google.com/g/jmeter-plugins> however I don't think it's connected with Concurrency Thread Group per se, try inspecting both test run results files using i.e. Active Threads Over Time<https://jmeter-plugins.org/wiki/ActiveThreadsOverTime/> and/or b listeners (can be installed using JMeter Plugins Manager<https://www.blazemeter.com/blog/jmeter-plugins-manager>), I'm pretty much sure that the load pattern would be different.

The error means that you've run out of outbound ports so:

  1.  You either need to get another machine and go for Distributed Testing<https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html>
  2.  Or amend your operating system configuration in order to increase the maximum number of outbound TCP ports and/or decrease port recycle time as most probably you're trying to reuse the port which hasn't been returned to the pool yet like it's described in Solved “java.net.BindException: Address already in use: connect” issue<https://www.baselogic.com/2011/11/23/solved-java-net-bindexception-address-use-connect-issue-windows/> on Windows article

SV: Address already in use with Concurrency Thread Group

Posted by Krister Nilsson <kr...@pensionsmyndigheten.se>.
Thanks Dmitri!

You got me on the right track. Found this https://learn.microsoft.com/en-us/biztalk/technical-guides/settings-that-can-be-modified-to-improve-network-performance and especially decreasing TcpTimedWaitDelay seemed to have a significant and good effect.
My problem was not the number of threads as much as the port recycle time I believe.

BR
/Krister

Från: Dmitri Tikhanski <gl...@live.com>
Skickat: den 12 december 2022 08:34
Till: JMeter Users List <us...@jmeter.apache.org>; Krister Nilsson <kr...@pensionsmyndigheten.se>
Ämne: Re: Address already in use with Concurrency Thread Group

Krister Nilsson wrote:

Hi!



Not sure if this group also answers questions about plugins, but it's worth a try.



I am using the Concurrency Thread Group (v 2.10 of the downloaded zip) and even when I configure it to increase in steps of two(2) threads I get the stack trace below for a bunch of requests. It happens already when running with 10 threads and 1200 tpm and it seems very much like it starts a few seconds BEFORE the plugin is about to increase the number of threads with (in this case) two more threads. Anyone who has seen the same problem and has a solution?



java.net.BindException: Address already in use: connect

          at java.net.DualStackPlainSocketImpl.connect0(Native Method)

          at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)

          at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

          at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)

          at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)

          at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

          at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

          at java.net.Socket.connect(Socket.java:607)

          at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)

          at org.apache.jmeter.protocol.http.sampler.hc.LazyLayeredConnectionSocketFactory.connectSocket(LazyLayeredConnectionSocketFactory.java:92)

          at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)

          at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$JMeterDefaultHttpClientConnectionOperator.connect(HTTPHC4Impl.java:326)

          at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374)

          at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)

          at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)

          at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)

          at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)

          at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)

          at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)

          at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)

          at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:850)

          at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:561)

          at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)

          at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1282)

          at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1271)

          at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:627)

          at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:551)

          at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:490)

          at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257)

          at java.lang.Thread.run(Thread.java:750)



With the normal vanilla Jmeter Thread Group the same does NOT occur even for 20 threads.



Med vänlig hälsning

Krister Nilsson

____________________________________________________________



Krister Nilsson / översteprest, prestandatest



IT Fond konto och teknisk plattform

Telefon direkt 010-454 21 97, mobil 072-210 21 97

krister.nilsson@pensionsmyndigheten.se<ma...@pensionsmyndigheten.se>



Pensionsmyndigheten,

Telefon vxl 0771-771 771, fax 08-658 13 00, www.pensionsmyndigheten.se<http://www.pensionsmyndigheten.se><http://www.pensionsmyndigheten.se/><http://www.pensionsmyndigheten.se/>





P Överväg miljöpåverkan innan du skriver ut detta e-brev.




Indeed questions about plugins should go to JMeter Plugins Support Forum<https://groups.google.com/g/jmeter-plugins> however I don't think it's connected with Concurrency Thread Group per se, try inspecting both test run results files using i.e. Active Threads Over Time<https://jmeter-plugins.org/wiki/ActiveThreadsOverTime/> and/or b listeners (can be installed using JMeter Plugins Manager<https://www.blazemeter.com/blog/jmeter-plugins-manager>), I'm pretty much sure that the load pattern would be different.

The error means that you've run out of outbound ports so:

  1.  You either need to get another machine and go for Distributed Testing<https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html>
  2.  Or amend your operating system configuration in order to increase the maximum number of outbound TCP ports and/or decrease port recycle time as most probably you're trying to reuse the port which hasn't been returned to the pool yet like it's described in Solved “java.net.BindException: Address already in use: connect” issue<https://www.baselogic.com/2011/11/23/solved-java-net-bindexception-address-use-connect-issue-windows/> on Windows article

Re: Address already in use with Concurrency Thread Group

Posted by Dmitri Tikhanski <gl...@live.com>.
Krister Nilsson wrote:
> Hi!
>
> Not sure if this group also answers questions about plugins, but it's worth a try.
>
> I am using the Concurrency Thread Group (v 2.10 of the downloaded zip) and even when I configure it to increase in steps of two(2) threads I get the stack trace below for a bunch of requests. It happens already when running with 10 threads and 1200 tpm and it seems very much like it starts a few seconds BEFORE the plugin is about to increase the number of threads with (in this case) two more threads. Anyone who has seen the same problem and has a solution?
>
> java.net.BindException: Address already in use: connect
>            at java.net.DualStackPlainSocketImpl.connect0(Native Method)
>            at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
>            at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
>            at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
>            at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
>            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
>            at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
>            at java.net.Socket.connect(Socket.java:607)
>            at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)
>            at org.apache.jmeter.protocol.http.sampler.hc.LazyLayeredConnectionSocketFactory.connectSocket(LazyLayeredConnectionSocketFactory.java:92)
>            at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
>            at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$JMeterDefaultHttpClientConnectionOperator.connect(HTTPHC4Impl.java:326)
>            at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374)
>            at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
>            at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
>            at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
>            at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
>            at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
>            at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
>            at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
>            at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:850)
>            at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:561)
>            at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)
>            at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1282)
>            at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1271)
>            at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:627)
>            at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:551)
>            at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:490)
>            at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257)
>            at java.lang.Thread.run(Thread.java:750)
>
> With the normal vanilla Jmeter Thread Group the same does NOT occur even for 20 threads.
>
> Med vänlig hälsning
> Krister Nilsson
> ____________________________________________________________
>
> Krister Nilsson / översteprest, prestandatest
>
> IT Fond konto och teknisk plattform
> Telefon direkt 010-454 21 97, mobil 072-210 21 97
> krister.nilsson@pensionsmyndigheten.se<ma...@pensionsmyndigheten.se>
>
> Pensionsmyndigheten,
> Telefon vxl 0771-771 771, fax 08-658 13 00, www.pensionsmyndigheten.se<http://www.pensionsmyndigheten.se/>
>
>
> P Överväg miljöpåverkan innan du skriver ut detta e-brev.
>
>
Indeed questions about plugins should go to JMeter Plugins Support Forum 
<https://groups.google.com/g/jmeter-plugins> however I don't think it's 
connected with Concurrency Thread Group per se, try inspecting both test 
run results files using i.e. Active Threads Over Time 
<https://jmeter-plugins.org/wiki/ActiveThreadsOverTime/> and/or b 
listeners (can be installed using JMeter Plugins Manager 
<https://www.blazemeter.com/blog/jmeter-plugins-manager>), I'm pretty 
much sure that the load pattern would be different.

The error means that you've run out of outbound ports so:

 1. You either need to get another machine and go for Distributed
    Testing
    <https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html>

 2. Or amend your operating system configuration in order to increase
    the maximum number of outbound TCP ports and/or decrease port
    recycle time as most probably you're trying to reuse the port which
    hasn't been returned to the pool yet like it's described in Solved
    “java.net.BindException: Address already in use: connect” issue
    <https://www.baselogic.com/2011/11/23/solved-java-net-bindexception-address-use-connect-issue-windows/>
    on Windows article