• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Application Performance Measurement

 
Greenhorn
Posts: 13
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi,

Am doing performance measurement for an multi-threaded application that fetches data from a SQLServer database. When I vary the no. of threads fetching data the network utilization(data sent) on the SQL Server machine also varies.
Is there any tool which will allow me to measure and also find the bottleneck. I need to figure out whether the bottleneck is at the SQL server while writing to the Network, or the application that is not able to accept and process the data and limits the SQL Server machine to send data.

Could someone send me a link or reference of some material which will help me understand how this works.

Thanks,
Amit
 
Amit J Thakur
Greenhorn
Posts: 13
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
As a first step I am working towards understanding the various perf counters for SQL Server. I would see if by looking at the perf counters I can get to the root cause.

Just as a thought, SQL server provides various counters, so it may become kind of easy. But how does one identify such bottlenecks. Whether the sender is not sending the data to the capacity because of some processing taking place on the machine or the receiver is processing data at a slower rate. I am considering a case where both ends have the same adapter speed.
Are there any tools to identify this. If yes what counters or metrics should be looked at. I have a java application on Linux connecting to SQL Server on Windows.

Anyone any thoughts ?

Thanks,
Amit
 
Ranch Hand
Posts: 862
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The jamon jdbc driver should be useful. Also AppDynamics has a free tool that you can download that should also be helpful.

Also, looking at user and system cpu would be helpful. Is user busy doing things or waiting on the OS? Does your user cpu become less busy when you increase your threads indicating that it is further waiting on resources such as network or the database?
 
steve souza
Ranch Hand
Posts: 862
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Attached is a screen snapshot of the type of information that is available via jamon jdbc driver. Time (avg, min, max, total columns) are in milliseconds. You have stats for how long each query takes as well as any exceptions thrown and time per jdbc method call (some of this is configurable). (oops the forum software failed on upload of the image snapshot)

Here is how it works.

http://jamonapi.sourceforge.net/#WhatsNew22
 
steve souza
Ranch Hand
Posts: 862
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Trying again.
jamonreport.png
[Thumbnail for jamonreport.png]
JAMon report with jdbc/sql data
 
Amit J Thakur
Greenhorn
Posts: 13
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hey Steve,

Really appreciate you taking out time. What I missed telling is that application is running on two different linux servers pulling data from SQL Server, and there is a Disk IO i.e. I am writing data back on the disk as csv files. So, I was just wondering whether the writing to disk is taking time i.e. the application is not able to process data at a rate transferred by the SQL Server or there is some problems on the SQL server not flushing the data to the network. The problem is that the NIC cards on both ends are of 1Gbps, and I am seeing a throughput of only 25% on the SQL server machine.

Is there a way to figure this out. What metrics should I be looking at. I was looking at few tools i.e. vmstat and iostat on linux, but am not sure what metrics should be seen.

I am not sure if I am able to explain it well . Am new to perf engineering and hence so many questions and thoughts .



Thanks,
Amit.
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic