Tuesday, January 14, 2014

Performance Testing - Considerations

Performance testing is done to provide  information about  application regarding speed, stability and scalability. In General, performance testing uncovers what needs to be improved before the application goes live. Without performance testing, applications are likely to suffer from issues such as running slow while several users use it simultaneously, inconsistencies across different operating conditions. Performance testing will determine whether or not their software meets speed, scalability and stability requirements under expected workloads. Applications gone live with poor performance metrics due to not having or poor performance testing are likely to gain a bad reputation and fail to meet expected business goals.

Common bottlenecks for the application performance  include not limited to

  1. CPU utilization
  2. Memory utilization
  3. Network utilization
  4. Operating System limitations
  5. Disk usage
In order to ascertain performance of a application during different performance testing activities, need to analyze following parameters.

  1. Processor Usage – Amount of time each processor spends executing non idle threads.
  2. Hit ratios – Hit ration measures the fraction of the traffic that is served from the web Cache. Also, total of number of SQL statements that are handled by cached data instead of expensive I/O operations. This is a good place to start for solving bottle necking issues.
  3. Hits Per Second – The number  of hits on a web server during each second of a load test.
  4. Rollback Segment - The amount of data that can rollback at any point in time.
  5. Database Locks - Locking of tables and databases needs to be monitored and carefully tuned.
  6. Top Waits – These are monitored to determine what wait times can be cut down when dealing with the how fast data is retrieved from memory
  7. Memory use – Amount of physical memory available to processes on a computer.
  8. Disk time – Amount of time disk is busy executing a read or write request.
  9. Bandwidth – Shows the bits per second used by a network interface.
  10. Committed memory – Amount of virtual memory used.
  11. Memory pages/second – Number of pages written to or read from the disk in order to resolve hard page faults. Hard page faults are when code not from the current working set is called up from elsewhere and retrieved from a disk.
  12. Network bytes total per second – The rate which bytes are sent and received on the interface including framing characters.
  13. Page faults/second – The overall rate in which fault pages are processed by the processor. This again occurs when a process requires code from outside its working set.
  14. CPU interrupts per second – It is the avg. number of hardware interrupts a processor is receiving and processing each second.
  15. Disk queue length – It is the avg. no. of read and write requests queued for the selected disk during a sample interval.
  16. Network output queue length – length of the output packet queue in packets. Anything more than two means a delay and bottle necking needs to be stopped.
  17. Response time – Time from when a user enters a request until the first character of the response is received.
  18. Private bytes – Number of bytes a process has allocated that can not be shared among other processes. These are used to measure memory leaks and usage.
  19. Throughput – Rate a computer or network receives requests per second.
  20. Amount of connection pooling – The number of user requests that are met by pooled connections. The more requests met by connections in the pool, the better the performance will be.
  21. Maximum active sessions – The maximum number of sessions that can be active at once.
  22. Thread Counts – An applications health can be measured by the no. of threads that are running and currently active.
  23. Garbage Collection – It has to do with returning unused memory back to the system. Garbage collection needs to be monitored for efficiency.
You can use any APM (Application Performance Management), NPM(Network Performance Management)  and Business Transaction Monitoring tool (BTM) tool  to analyze above mentioned parameters.

When selecting a performance monitoring tool, need to consider following factors
  • Which Monitor performance of the database's.
  • Which Monitor the Physical as well  Virtual components of the Infrastructure.
  • Understand and Map all the components involved in the transaction
  • Collect response times for a transaction
· 

No comments:

Post a Comment