Posts tonen met het label business transactions. Alle posts tonen
Posts tonen met het label business transactions. Alle posts tonen

woensdag 13 juni 2012

Small change, Big difference!


Performance testing can save you a lot of time ;-) and money. While load testing the new site of Selor (recruitment agency/testing agency for the Belgium Government), We, the team, found that a lot of time was being wasted, in seemingly harmless code. It was only a few milliseconds, but in many places.
We came up with few hypotheses.
  • the new virus scanner, who caused some problems in the past few weeks.
  • the network disc.

After trying the first option, we saw a minor improvement.
But when hacking the application to use local disc, instead of a network drive, we had a factor 3 for normal response times. Not a bad start.

Result 

We asked for a new rolled out system, and made sure we were using local discs, where possible, using the network disc only for our most critical parts.

We can now handle 5-to-7 times more traffic then before, without degrading performance.
The customer and the team were thrilled with excitement. Being fast is cool!

Challenges?

The application is a modern SOA application, meaning a lot of remoting is going on. Without AppDynamics, we would have lot more hypotheses and many wiled gauze chases. But now we could see, where the time was being spend. => Don’t guess, but measure change!



(not a real example!)

Where to start?

Why no try the free lite version from AppDynamics, for Java and .NET.

woensdag 2 november 2011

Performance Should Be Free


Performance Should Be FREE! Version 2!
Today I hope to add another free tool to your utility belt. To help you resolve your bottlenecks in production faster than before.

AppDynamics Lite version 2. This free profiler/monitor uses your “Business Logic” to visualize the performance problems.  Discover why your search- of checkout-“transaction” is slow.





Once you installed AppDynamics will automatically start detecting your business transactions. If something spikes your interest, you can right click the transaction and ask it to collect samples aka snapshot. These snapshots contain stack traces with method execution times. For example.
com.sample.domain.Cart.checkout(300 ms)
Also external calls, like webservices and SQL statements are collected.


New in version 2, is the trending of MBeans through JMX. This might not get you excited, but you can also add alerting, so receive a mail if a monitored value goes above certain base line.
Now you know if something is going wrong and you can take snapshots (manually) while it’s happening.



Pro’s
  •          Easy to install
  •           Easy to use
  •           Easy to understand
  •      Overhead < 2%

Con’s
  •           It’s limited: Max data retention of 2 hours
  •           Only 30 transactions
  •           It’s not perfect. Use it as your first line, but also consider using other tools like JVisualVM & MAT.

Upgrade? Why?
-          Less work! Snapshots are taken atomically.
-          Jumping from tier to tier. Business transaction can run over multiple tiers, now you can follow them and find out, which tier is causing the problem.
…

Advice
Try it! It will help you find what you are looking about 80 % of the time.
When your application matures it’s about 90%. (Personal opinion)

Watch the movie!
Install:
New version:

donderdag 14 juli 2011

Know where to look for bottlenecks! Business Transaction!

Time is of the essence when facing performance problems. We need to find out what's going on and who is effected by it.
If you have a distributed environment with clusters, multiple tiers, loadbalacing... Things can become a bit tricky in finding the root cause.
You will need to monitor everything that could be a potential bottleneck:

  • Memory
  • CPU
  • IO
  • Network
  • Application(s)!
Copyright AppDynamics


A business transaction is a way that helps you visualize one or more 'user interactions' in a certain theme.

 Example of business transactions:
  • Show detail
  • Checkout
  • Find product

 These 'user interactions' can run over one or multiple application transaction(s) which on their turn can be spread over one or our multiple nodes/tiers. The goal is to simplify and clarify. By doing this we can more easily estimate the impact of the problem and triangulate the problem faster. We are no longer looking at individual graphs of multiple machines but one business transaction that can run across multiple machines!
This small list of business transactions looks simple enough:



But when we have a closer look on what's happening, we can see how skillfully it hides it complexity.



The trick in defining business transactions is to make it 'user centric' => simple.
If your Dev, Ops, Business and/or a normal person. You can understand the importance if your checkout transaction is going slow, it's costing money!
So how do we create business transactions?
We are again using AppDynamics to help us show how it's done.

Dynamic discovery find our transactions automatically in most web applications. For Non-web-application, you can simply choose to listen to a class, interface or method.

We can add one our more simple rules to help us find our transactions. You can also simply choose to listen to a class, interface or method. (not visible on the screenshot)



In case we want to know more, for example we want to check our special sales offers or even more important COLOR. We can do this as well!


Step 1

Step 2



Or we want more details, AppDynamics can help us even more. We can even use the payload. (Think REST/web-services!)




That's all for now. Next time, we will start looking in how to find/resolve blind spots. If you like to know more about business transaction click on the link.