AW: AW: polygraph-client tries to connect to server with odd IP address

Hohl, Gerrit g.hohl at aurenz.de
Tue Dec 6 08:02:38 UTC 2011


Good morning Dmitry,

here is the current test case I'm using. With these values it works perfectly.
But if change the peak_req_rate to 25000/sec, the polygraph-server will start 567 servers while the polygraph-client starts 250 robots, expecting 1126 servers.
I guess it is not valid to have a bigger peak_req_rate than the max_host_load. But instead of using a false number of servers (shouldn't it be the same for client as well as for the server?) maybe it should quit by showing an error that the parameters are not valid?


/*
 * The focus of this test is response time and bandwidth under high load.
 * Server and robot don't have a think time or anything like that. They just
 * put as much stress as possible on the proxy.
 */

#include "contents.pg"
#include "cred.pg"

Bench theBench = {
	// The peak request rate is 10.000 requests per second
	peak_req_rate = 10000/sec;

	client_side = {
		/*
		 * The servers should be able to handle 20.000 requests per
		 * second.
		 */
		max_host_load = 20000/sec;
		/*
		 * Every robot should create 4 requests per seconds.
		 */
		max_agent_load = 4/sec;
		addr_space = [ 'lo::10.101.0-123.1-250/22' ];

	};
	server_side = {
		max_host_load = client_side.max_host_load;
		max_agent_load = undef();
		addr_space = [ 'lo::10.101.128-251.1-250:80/22' ];
	};
};

PolyMix4As asPolyMix4 = {
	// We will have 2 robots on each IP address / alias.
	agents_per_addr = 2;
};

DnsResolver resolver = {
	servers = [ '127.0.0.1:53' ];
	timeout = 5sec;
};

Server server = {
	kind = "simple-srv"; 
	contents = [ cntImage: 65%, cntHTML: 15%, cntDownload: 0.5%, cntOther ];
	direct_access = [ cntHTML, cntDownload, cntOther ];

	addresses = serverAddrs(asPolyMix4, theBench);
};

AddrMap addrMap = {
	zone = "bench.tst";
	addresses = server.addresses;
	names = ipsToNames(addresses, zone);
};

// a primitive robot
Robot robot = {
	kind = "simple-rbt";
	pop_model = {
		pop_distr = popUnif();
	};

	req_types = [ "Basic", "Ims200": 5%, "Ims304": 10%, "Reload": 5% ];
	req_methods = [ "GET", "POST": 1.5%, "HEAD": 0.1% ];

	dns_resolver = resolver;
	origins = addrMap.names;
	// origins = server.addresses;
	addresses = robotAddrs(asPolyMix4, theBench);

	post_contents = [ cntSimpleRequest ];

	credentials = cred;
};

Phase inc = {
	name = "inc";
	goal.duration = 5min;
	populus_factor_beg = 0%;
	populus_factor_end = 100%;
	load_factor_beg = 0%;
	load_factor_end = 100%;
};

Phase top = {
	name = "top";
	goal.duration = 10min;
};

Phase dec = {
	name = "dec";
	goal.duration = 5min;
	populus_factor_beg = 100%;
	populus_factor_end = 0%;
	load_factor_beg = 100%;
	load_factor_end = 0%;
};

schedule(inc, top, dec);

// commit to using these servers and robots
use(server, robot);
use(addrMap);
use(theBench);


-----Ursprüngliche Nachricht-----
Von: Dmitry Kurochkin [mailto:dmitry.kurochkin at measurement-factory.com] 
Gesendet: Montag, 5. Dezember 2011 18:03
An: Hohl, Gerrit; users at web-polygraph.org
Betreff: Re: AW: polygraph-client tries to connect to server with odd IP address

On Mon, 5 Dec 2011 16:51:36 +0100, "Hohl, Gerrit" <g.hohl at aurenz.de> wrote:
> Hello Dimitry,
> 
> I guess I found the problem:
> The ratio between peak_req_rate, max_host_load, max_agent_load and 
> agents_per_addr is the root of all. If the relationship of this 4 
> properties is not in balance polygraph-client somehow assumes a wrong 
> number of servers.
> 

Yes, the number of agents is calculated by Polygraph based on rate and load values.  But if the configuration is not valid (e.g. required number of agents exceeds the address space), Polygraph should exit with an error.  Otherwise it may be a bug.

I would like to reproduce the error you get.  The workload in your first email does not show the problem with Polygraph v4.3.2: Polygraph exits with the expected "too small address space" error.  What version of Web Polygraph are you using?

Regards,
  Dmitry

> Currently if've the following address space for the client side:
> 
>     addr_space = [ 'lo::10.101.0-123.1-250/22' ];
> 
> and the following for the server side:
> 
>     addr_space = [ 'lo::10.101.128-251.1-250:80/22' ];
> 
> And it is working perfectly now. :-)
> 
> I only use this configuration so I can "play" with web polygraph on a Ubuntu 10.04.3 server installation and prepare a load test / stress test. But the real one will be run on real hardware and also on a few computers instead of only one. So I will change the network configuration later.
> 
> Regards,
> Gerrit
> 
> -----Ursprüngliche Nachricht-----
> Von: Dmitry Kurochkin 
> [mailto:dmitry.kurochkin at measurement-factory.com]
> Gesendet: Montag, 5. Dezember 2011 14:13
> An: Hohl, Gerrit; users at web-polygraph.org
> Betreff: Re: polygraph-client tries to connect to server with odd IP 
> address
> 
> Hi Gerrit.
> 
> On Mon, 5 Dec 2011 13:11:22 +0100, "Hohl, Gerrit" <g.hohl at aurenz.de> wrote:
> > Hello everyone,
> > 
> > I've build a test case and facing now the problem that the 
> > polygraph-client tries to connect to server which don't exist. That 
> > is somehow odd as the polygraph-server and the polygraph-client 
> > using the same PGL file. If they use the same file and use the same 
> > PGL parser, shouldn't they work with the same numbers / IP addresses 
> > for servers and clients? I'm a little bit confused.
> > 
> 
> Yes, it should.
> 
> > At the end of this message is the content of the PGL file.
> > cred.pg contains some user credentials, but I don't use them at the 
> > moment.
> > DNS names are currently not used (or at least should not be used).
> > I only uses aliases in this version, no real machines (except the 
> > one where all the aliases are configured).
> > polygraph-server starts 26 agents, from 10.101.128.1 to 10.101.128.26.
> > polygraph-client starts 6 agents, from 10.101.0.1 to 10.101.0.3, 2 
> > on each alias.
> > After the start of the test case polygraph-client prints, e.g., that 
> > it can't establish a connection from 10.101.0.1:38686 to 10.101.148.15:80.
> > How does it come up with that server IP address? It is not even in 
> > the addr_space of the server. :-?
> 
> There are no hard-coded addresses in Polygraph, but some standard workloads use 10.101.128-251.1-250 server address space by default.
> Please double check that you are running the correct workload.
> 
> Note that the workload you sent does not work as is because the server address space is too small:
> 
>   serverAddrs() call failed: too small address space; 520 agents 
> cannot fit into 500 space slots
> 
> Regards,
>   Dmitry
> 
> > Make I should mention that I configure the aliases with the 
> > polygraph-aka command:
> > polygraph-aka --if lo --aliases 10.101.0.1-125/22 --aliases
> > 10.101.128-130.1-250/22
> > This creates 125 aliases for the servers and 750 aliases for the 
> > clients.
> > 
> > 
> > // this is just one of the simplest workloads that can produce hits 
> > // never use this workload for benchmarking #include "cred.pg"
> > 
> > // SimpleContent defines properties of content that the server 
> > generates; // if you get no hits, set SimpleContent.obj_life_cycle 
> > to cntStatic, which // is defined in workloads/include/contents.pg 
> > Content simpleContent = {
> > 	size = exp(13KB); // response sizes distributed exponentially
> > 	cachable = 80%;   // 20% of content is uncachable
> > };
> > 
> > Bench theBench = {
> > 	peak_req_rate = 10000/sec;
> > 
> > 	client_side = {
> > 		max_host_load = 500/sec;
> > 		max_agent_load = 100/sec;
> > 		addr_space = [ 'lo::10.101.0-123.1-250/22' ];
> > 
> > 	};
> > 	server_side = {
> > 		max_host_load = client_side.max_host_load;
> > 		max_agent_load = undef();
> > 		addr_space = [ 'lo::10.101.128-129.1-250:80/22' ];
> > 	};
> > };
> > 
> > PolyMix4As asPolyMix4 = {
> > 	agents_per_addr = 2;
> > };
> > 
> > DnsResolver resolver = {
> > 	servers = [ '127.0.0.1:53' ];
> > 	timeout = 5sec;
> > };
> > 
> > Server server = {
> > 	kind = "simple-srv"; 
> > 	contents = [ simpleContent ];
> > 	direct_access = contents;
> > 
> > 	addresses = serverAddrs(asPolyMix4, theBench); };
> > 
> > AddrMap addrMap = {
> > 	zone = "bench.tst";
> > 	addresses = server.addresses;
> > 	names = ipsToNames(addresses, zone); };
> > 
> > // a primitive robot
> > Robot robot = {
> > 	kind = "simple-rbt";
> > 	pop_model = { pop_distr = popUnif(); };
> > 	recurrence = 55% / simpleContent.cachable; // adjusted to get 55% 
> > DHR
> > 
> > 	// dns_resolver = resolver;
> > 	// origins = addrMap.names;
> > 	origins = server.addresses;
> > 	addresses = robotAddrs(asPolyMix4, theBench);
> > 
> > 	// credentials = cred;
> > };
> > 
> > Phase inc = {
> > 	name = "inc";
> > 	goal.duration = 5min;
> > 	populus_factor_beg = 0%;
> > 	populus_factor_end = 100%;
> > 	load_factor_beg = 0%;
> > 	load_factor_end = 100%;
> > };
> > 
> > Phase top = {
> > 	name = "top";
> > 	goal.duration = 10min;
> > };
> > 
> > Phase dec = {
> > 	name = "dec";
> > 	goal.duration = 5min;
> > 	populus_factor_beg = 100%;
> > 	populus_factor_end = 0%;
> > 	load_factor_beg = 100%;
> > 	load_factor_end = 0%;
> > };
> > 
> > schedule(inc, top, dec);
> > 
> > // commit to using these servers and robots use(server, robot); 
> > use(addrMap); use(theBench); 
> > _______________________________________________
> > Users mailing list
> > Users at web-polygraph.org
> > http://www.web-polygraph.org/mailman/listinfo/users
> _______________________________________________
> Users mailing list
> Users at web-polygraph.org
> http://www.web-polygraph.org/mailman/listinfo/users


More information about the Users mailing list