<div dir="ltr"><div><div><div>Hi Alex,<br><br></div>Thanks for the detailed explanation. I have tried with the following values to check if robots are not closing connections. <br><br>        req_methods = ["HEAD"];<br>        req_rate = 2/1min;<br>        MimeHeader header1 = 'Connection: keep-alive';<br>        MimeHeader header2 = 'Proxy-Connection: keep-alive';<br>        http_headers = [header1: 100%, header2:100%];<br>        pconn_use_lmt = const<a href="tel:%282147483647" value="+12147483647" target="_blank">(2147483647</a>); // Persistent connections - max value<br>        idle_pconn_tout = 60min;<br><br>Though there are two requests per min, the connections are closed. This 
could be because of proxy as you mentioned. While I have to confirm on what 
proxy does, I have a question on sending that first 'Head' request. The req_rate parameter controls how many requests can be sent for given duration. But the first request seems to be sent only after that specified duration. That is, if the req_rate = 1/10 min; then the first request is not sent until the 10th min approximately. Is there a way to send that first 'Head' request and not send any further requests at all to keep the connections alive? Thanks again for prompt response!<br><br></div>Regards,<br></div>Sanjeevi<br><div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 18, 2016 at 7:58 AM, Alex Rousskov <span dir="ltr"><<a href="mailto:rousskov@measurement-factory.com" target="_blank">rousskov@measurement-factory.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 03/17/2016 12:45 PM, Sanjeevi Rangan wrote:<br>
<br>
> I am trying to simulate persistent idle connections (that won't<br>
> contribute to the actual traffic) along with the workload that<br>
> contributes to the traffic. For an instance, if the actual test has 100<br>
> concurrent connections that has content size of 64KB, I would like to<br>
> have few sockets (say 50) in established state without sending any<br>
> requests. The requests would go via proxy. Is it possible to keep the<br>
> socket connections (client->proxy->server) alive with out sending any<br>
> requests (or just keep alives that doesn't send much of data) in WPG?<br>
<br>
</span>Yes, provided the proxy plays along. Polygraph can only control its side<br>
of the robot-proxy and proxy-server connections. The proxy may decide to<br>
close its connection at any time regardless of what Polygraph does.<br>
<br>
To accomplish the above, use 50 Robots with large constant pconn_use_lmt<br>
that avoid non-idempotent requests. Such a robot will not close its side<br>
of the idle persistent connection until its idle timeout expires (which<br>
you control via idle_pconn_tout).<br>
<br>
Same for Polygraph Server, except you only need one to serve all 50 robots.<br>
<br>
I believe all of the PGL options mentioned above are documented at<br>
<a href="http://www.web-polygraph.org/docs/reference/pgl/types.html#type:docs/reference/pgl/types/Agent" rel="noreferrer" target="_blank">http://www.web-polygraph.org/docs/reference/pgl/types.html#type:docs/reference/pgl/types/Agent</a><br>
<br>
<br>
Currently, there is no way to tell Polygraph to open a new connection<br>
(and send a new request) as soon as the proxy closes a previously idle<br>
persistent connection. That would be a generally useful option to add.<br>
It would make your test setup less dependent on the proxy behavior<br>
because Polygraph will maintain a pool of mostly idle 50 HTTP<br>
connections even if the proxy closes idle connections after a few<br>
seconds of inactivity.<br>
<br>
Currently, there is no way to configure Robots to open a connection<br>
without sending at least one request on that connection. We could add an<br>
option to delay request sending (after opening a connection for that<br>
request), but that feels like going a little too far in TCP testing<br>
direction. Besides, proxies may be more impatient with virgin<br>
connections waiting for their first request than with previously used<br>
idle persistent connections so you may want to send that first GET or<br>
HEAD anyway.<br>
<span class=""><br>
<br>
> I can even run two instances of WPG server (listening to two different<br>
> ports) and clients (one for the active connections and another one for<br>
> idle connections).<br>
<br>
</span>One polygraph-client (or polygraph-server) instance can support<br>
thousands of robots (or server agents). You may want to create agents<br>
dedicated to this "idle connection pool" task, but there is no need to<br>
use many Polygraph instances to accomplish that. Just describe<br>
everything your test needs in one PGL workload.<br>
<br>
<br>
HTH,<br>
<br>
Alex.<br>
<br>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><i><b>Regards,</b></i><div><i><b>Sanjeevi Ranga</b><b>n</b></i><i><b><br></b></i></div><br><div><br></div></div></div>
</div>