Why not just measure execution time of the existing http clients such as wget, 
curl, fetch. Those support cookies and authentication already, and for single 
transaction testing are very lightweight and fast. 

If you are rolling your own the question is what more do you want to do... this 
is pretty well-trodden territory and there have been many research papers 
published about the techniques.

Some things to think about:

- testing the server under load. To do this you need to run a tool in parallel 
to generate the workload. httperf does this.

- breaking down what's happening at the TCP level. tcpdump uses very little cpu 
and by capturing the packet headers you can then look at how much time was 
spend doing the handshake, waiting for the server to process the request, slow 
start, etc. You can write tools to extract this data automatically, do 
statistics across many runs, etc.

- predicting real browser performance. What happens in firefox when it's 
downloading a page full of embedded images and such, is quite different from 
the individual requests issues by a command line tool. Now you have pipelining, 
keepalive, and simultaneous connections to think about, plus whatever work the 
browser has to do to render the page. You can use javascript and frames to 
create a tool that measures start-to-finsih load time for a whole page. There 
are probably off-the-shelf products that do this now - it's been many years 
since I've done this.

In any case if you are going to be counting in microseconds I think it's 
unlikely that POE is your best solution. It would be a good choice for 
something like a web crawler where you are throttled by your ISP's connection 
anyway, and must handle a potentially large number of simultaneous connections 
waiting for server response.


On Jul 25, 2010, at 6:43 AM, Stefan Parvu wrote:

>> Im planning to see how can I develop a HTTP probe, in Perl,
>> probable using POE module which will do the following
> 
> Sorry for the trashed subject line. Basically my recorder 
> should do the following:
> 
>> start timer
>> for all urls
>>     start time 
>>     GET /something or POST /something
>>     stop timer
> 
>> print milisecs of the HTTP action(s).
> 
> The recorder currently we been developing, uses Apache HTTP Client in Java.
> The output is something like:
> 
> timestamp     transaction name        response time (ms)
> 1273024907:   main:   0.352
> 1273024912:   recdesign:      0.355
> 1273024917:   recorders:      0.381
> 1273024922:   reporting:      0.318
> 1273024927:   cpuplayer:      0.399
> 1273024932:   relnotes:       1.174
> 1273024937:   docs:   0.298
> 1273024942:   faq:    0.366
> 
> http://www.systemdatarecorder.org/recording/recorders.html#webrec
> 
> Questions:
> 
> 1. Can I build such recorder using POE ?
> 2. How light is the POE library versus Java ? Anyone have any experiment 
>   results regarding this ?
> 
> Thanks a lot,
> Stefan

Reply via email to