Web App performance benchmarking – Realtime and End-to-End

OK, last night was thinking of benchmark performance of each component of web app, e.g. client, app server and data services.
There are great APM available in the market which gives you a good amount of information to start with, but still, I was thinking something is missing and want more. APM I tried and used is AppDynamics.

So now what is more we want, AppDynamics provides the analytics capabilities but it comes with the cost.😁 So what all other open-source tools can help.

ELK: this is the really good centralized log analysis tool which you can configure to meet your expectations. It has an inbuilt search engine(elastic search) and data visualization (Kibana), and to get the logs or data you have LogStash which supports multiple technologies to receive data. Using ELK one can get the high-level health of the application, e.g. success rate of the transaction, average response time, slow performing requests, application usage details etc. With ELK you are covered for application server and data services performance.

In ELK we can push the Apache web access logs which give you visibility to usage and performance of the application.

Using MDC filters one can push the service/method performance details to ELK and yes exception details.

OK all this is configured and available, what next? So we don’t have to keep monitoring logs n data we are capturing we can configure alerts (email) n dashboards. But my recommendation (if you ask 😎) monitor the logs for at least a week to see is your new setup is capturing the details you are expecting n then tweak the configuration accordingly.

Now the challenge is how you can monitor client performance and do we really need to monitor it real time?

My thought is, at least monitor it for pilot release to see how the user is adaptive to your new application and if there are any issues. Even I feel it’s more critical than server performance, as most of your testing, all kind of is done with a controlled environment (machines, network, internet speed, browser types and even user behavior). So to get an answer to the question, how the actual user is using your app n what challenges he is facing? Real time Browser performance metric/log will be a real help.


\\TODO
Thoughts on real-time client component performance and monitoring of web application.

Web App performance benchmarking – Realtime and End-to-End

Testing Web Site for resposiveness and with different bandwidth

I used fiddler before to slowdown the network speed and test the web site with the slow speed. But with the new Chrome developer tool (Can be activated by pressing F12 OR Ctrl+Shift+I) you get option to emulate the screen with different mobile devices of different size. Even it has support to the notebook with touch screen.

Once the developer tool is open, just next to the “inspect element” icon, there is a small icon of mobile which enables the emulation.

DiffDevices

You can also choose the different network throttling options like, GPRS, EDGE, 3G, WiFi etc.

DiffThrottling

If you like to see if your site is mobile friendly or not, google has a very nice tool which crawl through all your pages and present the recommendation to you.

A page is eligible for the “mobile-friendly” label if it meets the following criteria as detected by Googlebot:
  • Avoids software that is not common on mobile devices, like Flash
  • Uses text that is readable without zooming
  • Sizes content to the screen so users don’t have to scroll horizontally or zoom
  • Places links far enough apart so that the correct one can be easily tapped

Link to tool https://www.google.com/webmasters/tools/mobile-friendly/

Testing Web Site for resposiveness and with different bandwidth

Load Testing with SOAPUI

For testing web service performance, I used SOAPUI tool, though its name is SOAP, but it also supports the REST service calls. Most of the time I use JMeter to test the performance of particular functionality, and we used SOAPUI for calling SOAP based services, I was always thinking to use it for performance test and this time, I used SOAPUI to test REST services, SOAPUI is simple to configure and to run.

Download it from http://www.soapui.org/Downloads/latest-release.html

Step 1) Create a new REST Project and provide the base URL, I used Node.js to expose one simple rest service for this blog.

SOAPUI_SS_1

Step 2) Under the project, create the New Test Suite (Ctrl + T)

SOAPUI_SS_2

Step 3) Under the Test Suite add new Load Test case (Ctrl + N)

Step 4) Click on the REST Request button, it will prompt for the new Rest Request name, and once you provide the name, it will ask for the URL, provide the complete URL and click OK,

SOAPUI_SS_3

Step 5) it will create a simple REST Request and using UI you can provide the details, like parameters, header details etc.

SOAPUI_SS_4

Step 6) Now, for running the load test, select the Strategy as “Thread”, you can also explore other options like, Simple, Burst and Variance. When you select strategy as thread you can see, option to provide details for, number of virtual users, start threads, end threads and total runs. Total runs has two different parameters to set, one is time and another is number of requests.

SOAPUI_SS_5

If I choose number of requests then Load test will stop once the specifed number of test are ran, if you specify the time, test will continue for that perticular time, so if you want to figure out what is the average resposne time of your request when at a time 10 users are active and 60 requests are made, you can use the thread option

But if you want to figure out how many requests you can serve in 60 seconds if 10 users are active at a time i.e. virtual users,then you can use time option.

The feature I liked most of SOAP UI is, you can define the start treads and end thread parameter, say if you have implemented the caching and you want to have initial load of lesser number and subsequent threads should have more number of users, then you can specify Start Threads to 3 or any minimum number you can think of.

In SOAP UI you can try above example, just import the below XML project file in SOAP UI, and start your any REST server.

Download SOAP UI Project File

Load Testing with SOAPUI