Hi, Find my answers below. Regards On Tue, Sep 12, 2017 at 4:49 AM, Isuru Perera <[email protected]> wrote:
> Hi Philippe, > > Thanks a lot for your comments > > I have actually tested concurrent users up to 2000 in non-GUI mode and I > didn't have any issues. As I mentioned earlier, the load average of the > JMeter server is very high. Therefore I wanted to find out why the load > average is very high. One reason could be that there is one thread per > user. So, 2000 users mean 2000 threads, which can be very high for a server > to handle. Could you also please check the load average of the server when > you are running a test with more than 1000 concurrent users? I hope you > will also observe high load average. > No it is not high, if it was I would be worried :-) about the accurateness of my results. What is the configuration of your server ? Are you following best-practices in tests , scripting, configuration ? Did you make some thread dumps or profile to see where CPU was consumed for example ? Could you share your plan ? privately ? > > Most people I work with are really concerned about the load average. Since > one thread per user is a core part of JMeter architecture, I thought may be > using an asynchronous HTTP client like Netty will help to reduce the load > average of the server. That's why I started this mail thread. > I understand and as I wrote your thinking is good for me, but the correlation you make between High Load and JMeter architecture might not be correct. If I had to create a whole new JMeter today , I would go for a different architecture, still I use JMeter for pretty high loads without issues and keep in mind that once you've set aside CPU consumption, a machine has other limitations particularly on network side. > I would love to contribute to JMeter, but I need to first invest some time > to understand existing code base. > Absolutely. If you need help, feel free to ask questions. And as usual, start with small issues, medium then big pieces to get comfortable with code. > > On Mon, Sep 11, 2017 at 5:08 PM, Philippe Mouawad < > [email protected]> wrote: > >> Hello, >> >> >> On Mon, Sep 11, 2017 at 8:26 AM, Isuru Perera <[email protected]> >> wrote: >> >>> Hi Philippe, >>> >>> I'm sorry for not explaining my reasons sooner. >>> >>> So, the main reason for asking about a Netty Client Implementation for >>> HTTP Sampler is that Netty is supposed to be better at working under large >>> number of concurrent non blocking connections. >>> >>> The main issues we are having with current HTTP Sampler are: >>> >>> 1. Load Average of the JMeter instance is very high. See thread: >>> http://www.jmeter-archive.org/Maximum-number-of-concurrent-u >>> sers-td5726006.html >>> >>> <http://www.jmeter-archive.org/Maximum-number-of-concurrent-users-td5726006.html>. >>> Even for low number of concurrent users (eg, 300), if there is no timers >>> added to the test plan, the load average of the client goes beyond >>> acceptable limits. >>> >>> Not being able to go above 300 threads is due to wrong configuration, >> bad scripting practices, GUI usage ... >> For example, In our experience, on a 8vCPU, 16 Gb RAM, you can easily go >> up to 2000 / 3000 threads depending on test. Have a look on recent >> benchmarks done on last JMeter versions. >> So I think this particular case is not relevant. >> >>> >>> >>> 1. With the default value for "httpclient4.time_to_live", we see >>> very high response times. When we increase the time_to_live value for 30 >>> minutes to keep a fixed number of connections, the response times are >>> much >>> better. See also http://www.jmeter-archive.org/ >>> Number-of-open-connections-vary-with-time-tp5726000p5726123.html >>> >>> <http://www.jmeter-archive.org/Number-of-open-connections-vary-with-time-tp5726000p5726123.html> >>> >>> >> The default value for "httpclient4.time_to_live" is by definition a >> "default" value, we configure it to something that looks reasonable as an >> average, but it must of course be tuned depending on server. >> >> ------------------------------------------------------------ >> ------------------------------------------------------------ >> ----------------------- >> # Idle connection timeout (Milliseconds) to apply if the server does not >> send >> # Keep-Alive headers (default 0) >> # Set this > 0 to compensate for servers that don't send a Keep-Alive >> header >> # If <= 0, idle timeout will only apply if the server sends a Keep-Alive >> header >> >> #httpclient4.idletimeout=0 >> >> # Check connections if the elapsed time (Milliseconds) since the last >> # use of the connection exceed this value >> #httpclient4.validate_after_inactivity=1700 >> >> # TTL (in Milliseconds) represents an absolute value. >> # No matter what, the connection will not be re-used beyond its TTL. >> #httpclient4.time_to_live=2000 >> >> ------------------------------------------------------------ >> ------------------------------------------------------------ >> ----------------------- >> >> I'm wondering whether we could avoid above issues with a Netty Client >>> Implementation instead of the default client implementation in JMeter. >>> >>> WDYT? >>> >> I don't think so, as they are unrelated for me. >> >> But of course, this does not mean that your idea is bad. And of course >> Netty would be a good candidate for an AsyncHttpSampler or HTTP/2 as long >> as HC5. >> >> If you're willing to invest some time on HTTP/2 implementation of a >> sampler within JMeter (which could involve some rework in JMeter) you're >> more than welcome. >> >> Thanks for your proposal >> >>> Thank you. >>> >>> On Tue, Jul 25, 2017 at 10:44 AM, Isuru Perera <[email protected]> wrote: >>> >>>> Hi Philippe, >>>> >>>> I'm sorry about the delay. I'll send a mail explaining the reasons >>>> soon. >>>> >>>> On Fri, Jul 21, 2017 at 12:30 AM, Philippe Mouawad < >>>> [email protected]> wrote: >>>> >>>>> Hello, >>>>> Why do you want that ? >>>>> Thanks >>>>> >>>>> On Thu, Jul 20, 2017 at 3:35 PM, Isuru Perera <[email protected]> >>>>> wrote: >>>>> >>>>> > Hi all, >>>>> > >>>>> > I found a Netty client implementation for HTTP2: >>>>> > https://github.com/syucream/jmeter-http2-plugin. However, I >>>>> couldn't find >>>>> > a >>>>> > Netty client implementation for HTTP Sampler. >>>>> > >>>>> > On Wed, Jul 19, 2017 at 3:32 PM, Isuru Perera <[email protected]> >>>>> wrote: >>>>> > >>>>> > > Hi Devs, >>>>> > > >>>>> > > Is there a Netty client implementation for HTTP Sampler either >>>>> using >>>>> > Netty >>>>> > > directly or using https://github.com/AsyncHttpCl >>>>> ient/async-http-client? >>>>> > > >>>>> > > -- >>>>> > > Isuru Perera >>>>> > > about.me/chrishantha >>>>> > > >>>>> > >>>>> > >>>>> > >>>>> > -- >>>>> > Isuru Perera >>>>> > about.me/chrishantha >>>>> > >>>>> >>>>> >>>>> >>>>> -- >>>>> Cordialement. >>>>> Philippe Mouawad. >>>>> >>>> >>>> >>>> >>>> -- >>>> Isuru Perera >>>> about.me/chrishantha >>>> >>> >>> >>> >>> -- >>> Isuru Perera >>> about.me/chrishantha >>> >> >> >> >> -- >> Cordialement. >> Philippe Mouawad. >> >> >> > > > -- > Isuru Perera > about.me/chrishantha > -- Cordialement. Philippe Mouawad. Ubik-Ingénierie UBIK LOAD PACK Web Site <http://www.ubikloadpack.com/> UBIK LOAD PACK on TWITTER <https://twitter.com/ubikloadpack>
