Web page performance as opposed to website performance is a bit more of an intricate job requiring familiarization with what is actually served on your website and how your web pages are woven together.
If we’re talking about website performance – we most likely refer to web server performance – how fast requests are being served or what’s the percentage of failed requests for instance.
Opposed to that, web page performance, or at least what I am referring to is the equivalent of asking the following invaluable questions:
- How fast/slow is my web page in general?
- Are there excessively slow parts at my web page?
- If my web page is indeed slow, where is the bottleneck?
And guys, for this, there is a solution. It is a really handy utility called jiffy-web.
Jiffy-web in a nutshell
Jiffy-web enables you, the web developer, to insert “break points” in your web pages and measure how long it takes for the code in between them to run. What some might call instrumenting and profiling of code. Simple, yet extremely powerful.
This is all that you need to profile the execution of your web page loading and optimize your overall web server performance.
The architecture of Jiffy-web is relatively simple with a HTTP call being made to the web server every time a break point was set. The web server in turn will generate a customized log which a Jiffy-web ingestor will parse and generate SQL content. The SQL content can then be profiled and reports can be generated.
The setup of Jiffy-web is relatively simple. Yes, it includes some web server configuration, however I find it redundant to get into the bits and bytes of it as the instructions are available on the jiffy-web website.
As mentioned before, Jiffy-web includes an “ingestion” phase, which is what would parse the customized web server logs and generate SQL content. But we have Monitis!
So we here at Monitis decided to take advantage of that, and show you how easy it is to integrate Jiffy-web with Monitis.
And before progressing to the next phase, I highly recommend to familiarize yourself with Jiffy-web as it contains just about enough of documentation to get you going.
M3 for the rescue
M3 has been my default option when trying to integrate anything with Monitis. M3 can simply run, parse and update data on Monitis, simple as that.
M3 is going to be used as our Jiffy-web ingestor to Monitis.
So assuming you have a web server which generates Jiffy-web logs you can operate on we can continue to the next phase.
In the integration example, however, I’m going to operate on the Jiffy-web sample file – which contains a handful of log lines. To convey the idea of how to load the data into Monitis it should suffice.
Before we continue on, describing the “grocery list” of the things you have to do to get going with M3 and Jiffy-web, I’ll describe what will be happening beyond the scenes:
- Jiffy-web makes HTTP requests
- Your web server generates log content with jiffy-web calls
- M3 invokes the jiffy-web ingestor, parses and output and uploads the results to Monitis
So lets go!
The magic of Jiffy-web, M3 & Monitis
I assume you have M3 checked out at /usr/share/monitisexchange/Monitis-Linux-Scripts/M3 setup with your API and secret key.
Lets check out jiffy-web at /usr/share/jiffy-web:
# cd /usr/share && svn checkout http://jiffy-web.googlecode.com/svn/trunk/ jiffy-web
And patch it with the CSV patch:
# cd /usr/share/jiffy-web && patch -p1 < /usr/share/monitisexchange/Monitis-Linux-Scripts/M3/jiffy-web/jiffy.diff && chmod +x ingestor/performance_log_inserter.pl patching file ingestor/performance_log_inserter.pl
Great! We’re ready for action!!
# cd /usr/share/monitisexchange/Monitis-Linux-Scripts/M3 # ./AddMonitors.pl jiffy-web/jiffy_web.xml Adding monitor 'Jiffy-Web sample monitor - PHONE_FORM'...OK Adding monitor 'Jiffy-Web sample monitor - AREA_ZIP_FORM'...OK # ./RunMassLoad.pl jiffy-web/jiffy_web.xml
Look at the beauty! It’s Loading!
M3 will parse the date from the log files provided by Jiffy-web, so in case you wonder where the results are – then have a look at June 27th of 2008, because these are the time stamps on the sample Jiffy-web log.
What’s next? Now you should design your own tests and have your own log. Copy & edit jiffy_web.xml and start finding your bottlenecks in your web pages!