You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by Jacob Burkamper <ja...@cipafilter.com> on 2014/10/17 03:43:09 UTC

Distributed Testing with Multiple IPs per server

Hello!

I am attempting to use jmeter to test a web service which will return
differing results based on the IP address which sent the request, as well
as potentially behave differently depending on the number of IP addresses
active in the last few minutes.

I have successfully used jmeter as a single client to simulate
approximately 500 users, all with unique IP addresses. However, the single
client is unable to scale any higher than this, and I need to be able to
test with potentially thousands of users.

Therefore, I have acquired more physical hardware, with the intent to use
jmeter's distributed testing capability. The trouble I am having is that I
can not seem to figure out how to have each individual server use a
different IP list.

What I would like is something like this:

Server1 runs tests with 500 users, using IP addresses from the 10.1.0.0/16
range.
Server2 runs tests with 500 users, using IP addresses from the 10.2.0.0/16
range.
Server3 runs tests with 500 users, using IP addresses from the 10.3.0.0/16
range.

All other parameters of the test remain the same. Is there some way to
accomplish this, or to at least come close?

Re: Distributed Testing with Multiple IPs per server

Posted by Jacob Burkamper <ja...@cipafilter.com>.
The CSV files are relatively static, as compared to the test case which I
seem to always be tweaking. deploying them manually will be annoying, but
not nearly as much as deploying the entire test.

I do like the idea of using the same lower bits, and then just changing the
top ones. That could definitely work. However, it would cause duplicate
usernames to be used per IP address, though I don't believe this is
actually detrimental to the use case, just less realistic.

I will investigate these options more on my own. Thank you very much for
your help, it is much appreciated!

On Fri, Oct 17, 2014 at 4:04 PM, sebb <se...@gmail.com> wrote:

> On 17 October 2014 19:28, Jacob Burkamper <ja...@cipafilter.com> wrote:
> > Yes, I used the source address field of the HTTP sampler to change the
> > source IP address.
> >
> > I have a CSV file with username, password, and IP address combinations in
> > it.
> >
> > I am in a linux (Ubuntu) environment.
> >
> > Before I start the test, I use a linux shell script to parse the same CSV
> > file that the test uses, and that shell script adds all the IP addresses
> to
> > the interface of the machine. Then, when jmeter runs it connects to my
> web
> > service using the username, password, and source IP address specified by
> > the CSV. I realize I can simply change the CSV per server and manually
> > deploy that file and the test config file to multiple units, and then
> > manually start the tests. However, this has the disadvantage of requiring
> > me to push any changes to the test scenario manually, which can make
> > troubleshooting somewhat cumbersome. I would much rather be able to
> simply
> > click a button in the jmeter GUI and have it automatically distribute and
> > begin the tests, if this is at all possible.
>
> JMeter only distributes the test plan, it does not distribute any data
> files.
>
> > Could I perhaps change the CSV path based on the jmeter server's hostname
> > or something similar? Then I could just maintain a CSV with appropriate
> IP
> > addresses for each server, and still use the jmeter GUI for test
> management.
>
> That would still require you to deploy the CSV files.
>
> If the tests can all use the same set of lower 16 bits, then you could
> just provide that in a common CSV file.
>
> You can then define the top 16 bits as a property on each server.
> E.g. in the local user.properties file or on the command-line.
>
> The Source address could then be constructed by combining the two parts:
>
> ${__P(TOP)}.${BOTTOM}
>
> Another possible approach would be to use host names rather than IP
> addresses.
> This would require setting up local hostnames on each of the JMeter
> systems, and might not be feasible.
>
> > On Fri, Oct 17, 2014 at 12:18 PM, sebb <se...@gmail.com> wrote:
> >
> >> On 17 October 2014 02:43, Jacob Burkamper <ja...@cipafilter.com>
> wrote:
> >> > Hello!
> >> >
> >> > I am attempting to use jmeter to test a web service which will return
> >> > differing results based on the IP address which sent the request, as
> well
> >> > as potentially behave differently depending on the number of IP
> addresses
> >> > active in the last few minutes.
> >> >
> >> > I have successfully used jmeter as a single client to simulate
> >> > approximately 500 users, all with unique IP addresses.
> >>
> >> How did you do this?
> >> Did you use the HTTP Sampler "Source Address" field?
> >> And what did you use to populate it?
> >>
> >> > However, the single
> >> > client is unable to scale any higher than this, and I need to be able
> to
> >> > test with potentially thousands of users.
> >> >
> >> > Therefore, I have acquired more physical hardware, with the intent to
> use
> >> > jmeter's distributed testing capability.
> >>
> >> You might find that the JMeter client and/or network connections to
> >> the JMeter servers are a limitation.
> >>
> >> I would suggest running stand-alone JMeter non-GUI instances and
> >> combining the results afterwards.
> >> You can start the test on a single client, and add more clients until
> >> the server under test starts to complain.
> >>
> >> In either case, make sure your JMeter hosts clocks are synchronised.
> >>
> >> > The trouble I am having is that I
> >> > can not seem to figure out how to have each individual server use a
> >> > different IP list.
> >>
> >> That depends on how you are doing it currently.
> >>
> >> > What I would like is something like this:
> >> >
> >> > Server1 runs tests with 500 users, using IP addresses from the
> >> 10.1.0.0/16
> >> > range.
> >> > Server2 runs tests with 500 users, using IP addresses from the
> >> 10.2.0.0/16
> >> > range.
> >> > Server3 runs tests with 500 users, using IP addresses from the
> >> 10.3.0.0/16
> >> > range.
> >> >
> >> > All other parameters of the test remain the same. Is there some way to
> >> > accomplish this, or to at least come close?
> >>
> >> Yes, but more info is needed
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
> >> For additional commands, e-mail: user-help@jmeter.apache.org
> >>
> >>
> >
> >
> > --
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
> For additional commands, e-mail: user-help@jmeter.apache.org
>

Re: Distributed Testing with Multiple IPs per server

Posted by sebb <se...@gmail.com>.
On 17 October 2014 19:28, Jacob Burkamper <ja...@cipafilter.com> wrote:
> Yes, I used the source address field of the HTTP sampler to change the
> source IP address.
>
> I have a CSV file with username, password, and IP address combinations in
> it.
>
> I am in a linux (Ubuntu) environment.
>
> Before I start the test, I use a linux shell script to parse the same CSV
> file that the test uses, and that shell script adds all the IP addresses to
> the interface of the machine. Then, when jmeter runs it connects to my web
> service using the username, password, and source IP address specified by
> the CSV. I realize I can simply change the CSV per server and manually
> deploy that file and the test config file to multiple units, and then
> manually start the tests. However, this has the disadvantage of requiring
> me to push any changes to the test scenario manually, which can make
> troubleshooting somewhat cumbersome. I would much rather be able to simply
> click a button in the jmeter GUI and have it automatically distribute and
> begin the tests, if this is at all possible.

JMeter only distributes the test plan, it does not distribute any data files.

> Could I perhaps change the CSV path based on the jmeter server's hostname
> or something similar? Then I could just maintain a CSV with appropriate IP
> addresses for each server, and still use the jmeter GUI for test management.

That would still require you to deploy the CSV files.

If the tests can all use the same set of lower 16 bits, then you could
just provide that in a common CSV file.

You can then define the top 16 bits as a property on each server.
E.g. in the local user.properties file or on the command-line.

The Source address could then be constructed by combining the two parts:

${__P(TOP)}.${BOTTOM}

Another possible approach would be to use host names rather than IP addresses.
This would require setting up local hostnames on each of the JMeter
systems, and might not be feasible.

> On Fri, Oct 17, 2014 at 12:18 PM, sebb <se...@gmail.com> wrote:
>
>> On 17 October 2014 02:43, Jacob Burkamper <ja...@cipafilter.com> wrote:
>> > Hello!
>> >
>> > I am attempting to use jmeter to test a web service which will return
>> > differing results based on the IP address which sent the request, as well
>> > as potentially behave differently depending on the number of IP addresses
>> > active in the last few minutes.
>> >
>> > I have successfully used jmeter as a single client to simulate
>> > approximately 500 users, all with unique IP addresses.
>>
>> How did you do this?
>> Did you use the HTTP Sampler "Source Address" field?
>> And what did you use to populate it?
>>
>> > However, the single
>> > client is unable to scale any higher than this, and I need to be able to
>> > test with potentially thousands of users.
>> >
>> > Therefore, I have acquired more physical hardware, with the intent to use
>> > jmeter's distributed testing capability.
>>
>> You might find that the JMeter client and/or network connections to
>> the JMeter servers are a limitation.
>>
>> I would suggest running stand-alone JMeter non-GUI instances and
>> combining the results afterwards.
>> You can start the test on a single client, and add more clients until
>> the server under test starts to complain.
>>
>> In either case, make sure your JMeter hosts clocks are synchronised.
>>
>> > The trouble I am having is that I
>> > can not seem to figure out how to have each individual server use a
>> > different IP list.
>>
>> That depends on how you are doing it currently.
>>
>> > What I would like is something like this:
>> >
>> > Server1 runs tests with 500 users, using IP addresses from the
>> 10.1.0.0/16
>> > range.
>> > Server2 runs tests with 500 users, using IP addresses from the
>> 10.2.0.0/16
>> > range.
>> > Server3 runs tests with 500 users, using IP addresses from the
>> 10.3.0.0/16
>> > range.
>> >
>> > All other parameters of the test remain the same. Is there some way to
>> > accomplish this, or to at least come close?
>>
>> Yes, but more info is needed
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
>> For additional commands, e-mail: user-help@jmeter.apache.org
>>
>>
>
>
> --
> *Jacob Burkamper*
> *CIPAFilter Development*
> *Email:*  Jacobb@cipafilter.com
> *Web:*      http://www.cipafilter.com

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
For additional commands, e-mail: user-help@jmeter.apache.org


Re: Distributed Testing with Multiple IPs per server

Posted by Jacob Burkamper <ja...@cipafilter.com>.
Yes, I used the source address field of the HTTP sampler to change the
source IP address.

I have a CSV file with username, password, and IP address combinations in
it.

I am in a linux (Ubuntu) environment.

Before I start the test, I use a linux shell script to parse the same CSV
file that the test uses, and that shell script adds all the IP addresses to
the interface of the machine. Then, when jmeter runs it connects to my web
service using the username, password, and source IP address specified by
the CSV. I realize I can simply change the CSV per server and manually
deploy that file and the test config file to multiple units, and then
manually start the tests. However, this has the disadvantage of requiring
me to push any changes to the test scenario manually, which can make
troubleshooting somewhat cumbersome. I would much rather be able to simply
click a button in the jmeter GUI and have it automatically distribute and
begin the tests, if this is at all possible.

Could I perhaps change the CSV path based on the jmeter server's hostname
or something similar? Then I could just maintain a CSV with appropriate IP
addresses for each server, and still use the jmeter GUI for test management.

On Fri, Oct 17, 2014 at 12:18 PM, sebb <se...@gmail.com> wrote:

> On 17 October 2014 02:43, Jacob Burkamper <ja...@cipafilter.com> wrote:
> > Hello!
> >
> > I am attempting to use jmeter to test a web service which will return
> > differing results based on the IP address which sent the request, as well
> > as potentially behave differently depending on the number of IP addresses
> > active in the last few minutes.
> >
> > I have successfully used jmeter as a single client to simulate
> > approximately 500 users, all with unique IP addresses.
>
> How did you do this?
> Did you use the HTTP Sampler "Source Address" field?
> And what did you use to populate it?
>
> > However, the single
> > client is unable to scale any higher than this, and I need to be able to
> > test with potentially thousands of users.
> >
> > Therefore, I have acquired more physical hardware, with the intent to use
> > jmeter's distributed testing capability.
>
> You might find that the JMeter client and/or network connections to
> the JMeter servers are a limitation.
>
> I would suggest running stand-alone JMeter non-GUI instances and
> combining the results afterwards.
> You can start the test on a single client, and add more clients until
> the server under test starts to complain.
>
> In either case, make sure your JMeter hosts clocks are synchronised.
>
> > The trouble I am having is that I
> > can not seem to figure out how to have each individual server use a
> > different IP list.
>
> That depends on how you are doing it currently.
>
> > What I would like is something like this:
> >
> > Server1 runs tests with 500 users, using IP addresses from the
> 10.1.0.0/16
> > range.
> > Server2 runs tests with 500 users, using IP addresses from the
> 10.2.0.0/16
> > range.
> > Server3 runs tests with 500 users, using IP addresses from the
> 10.3.0.0/16
> > range.
> >
> > All other parameters of the test remain the same. Is there some way to
> > accomplish this, or to at least come close?
>
> Yes, but more info is needed
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
> For additional commands, e-mail: user-help@jmeter.apache.org
>
>


-- 
*Jacob Burkamper*
*CIPAFilter Development*
*Email:*  Jacobb@cipafilter.com
*Web:*      http://www.cipafilter.com

Re: Distributed Testing with Multiple IPs per server

Posted by sebb <se...@gmail.com>.
On 17 October 2014 02:43, Jacob Burkamper <ja...@cipafilter.com> wrote:
> Hello!
>
> I am attempting to use jmeter to test a web service which will return
> differing results based on the IP address which sent the request, as well
> as potentially behave differently depending on the number of IP addresses
> active in the last few minutes.
>
> I have successfully used jmeter as a single client to simulate
> approximately 500 users, all with unique IP addresses.

How did you do this?
Did you use the HTTP Sampler "Source Address" field?
And what did you use to populate it?

> However, the single
> client is unable to scale any higher than this, and I need to be able to
> test with potentially thousands of users.
>
> Therefore, I have acquired more physical hardware, with the intent to use
> jmeter's distributed testing capability.

You might find that the JMeter client and/or network connections to
the JMeter servers are a limitation.

I would suggest running stand-alone JMeter non-GUI instances and
combining the results afterwards.
You can start the test on a single client, and add more clients until
the server under test starts to complain.

In either case, make sure your JMeter hosts clocks are synchronised.

> The trouble I am having is that I
> can not seem to figure out how to have each individual server use a
> different IP list.

That depends on how you are doing it currently.

> What I would like is something like this:
>
> Server1 runs tests with 500 users, using IP addresses from the 10.1.0.0/16
> range.
> Server2 runs tests with 500 users, using IP addresses from the 10.2.0.0/16
> range.
> Server3 runs tests with 500 users, using IP addresses from the 10.3.0.0/16
> range.
>
> All other parameters of the test remain the same. Is there some way to
> accomplish this, or to at least come close?

Yes, but more info is needed

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
For additional commands, e-mail: user-help@jmeter.apache.org