How to check your Integration Server’s performance

My dear readers,


Welcome to 2019. It has been a while since my last published post, but I am back and ready to… rumbleeeee…. (I mean explore 🙂 ).

I wish you a great year full of happiness, joy, health and, of course, exploring.

Let me give you an advice: Build a process for the work/topics/areas that you consider important.
Without a process in place, it is so easy to get side-tracked and caught-up in other stuff.

If you want to write a blog post, set an appointment in your calendar and stick to it. No excuses.

If you want to work on your side project, set aside regularly a couple of hours of uninterrupted work.

Without this, your side projects (whatever these might be) will only get the leftover time slots.

And that is not what you want. This usually means no progress and a lot of frustration.

Where to go next, after our long talk on Coding Guidelines?


Well, I have decided to ease our way into the New Year with a rather small and hopefully fun post where we discuss several ways to check the performance of your services.

When I say performance I usually refer to the response times of the services.

However, the Performance area is wider and contains other aspects such as memory, CPU, file system usage, etc. Some tools will provide statistics for these aspects as well.


Not gonna mention how important is the performance in the integration world. I already mentioned it here. It plays a crucial role, especially in the online integrations.

What I am going to mention in this post are some tools and/or ways you can check the overall performance of the Integration Server or the specific performance of a subset of services.


I encourage you to leave a comment if you know and use other tools.

My feeling (based on the last post where I mentioned some code review tools) is that every enterprise uses different tools or builds custom ones for this purpose.

I would love to hear about those: The buried treasures, the hidden gems. What made you or your organization decide you should create such a tool?

So go ahead and leave a comment. It’s free 🙂




Built-in tools



This section is about tools that require a design-time approach and code changes to implement/activate.


I am not a particular fan of these tools because they require code changes for an aspect that should not be code related.

I see topics such as security, logging or monitoring as one layer above the code or, for a better view, transitioning the code.

Configuring them should not require code changes.



Audit logging



We have covered Audit logging in this blog post, so I will not repeat the concepts here.

What audit logging also gives us is the duration of the audited service.

Although as mentioned above, response time is just one aspect of the performance domain, high response time can be usually correlated with high resource consumption.


One of the drawbacks of using audit logging is the fact that this is a design time setting.
Therefore if you want a new service audited, you have to change the service properties and then redeploy.

A little too much work, if you ask me.




IS Statistics page



We all know and love this. Maybe not necessarily love, but I think all of us know it as it is the home page of the IS Admin console.

I like it because it gives you a bird’s eye view of what is happening with the Integration Server. You can drill down and see sessions, threads, errors if you want.

I like it because it says: Welcome, here is how your server is doing. Have a nice day, IS Administrator.

Or at least this is how I hear it.

Ohh boy, Integration Server is talking to me. That’s..well, new.




Custom performance logging



I have seen this approach in different flavors, but in the end, it is the same core principle.

It tackles only the response time aspect and involves more code changes that I can swallow.

Basically, the service whose performance needs monitoring is wrapped between two (START and END) or three (START, END, and ERROR) logging statements. The latter usually calculates the service duration.

This approach goes hand in and with creating some kind of a viewing tool that allows filtering and ordering of the results.

I personally do not like the approach because it promotes reinventing the wheel and it ties the implementation and monitoring part together.

These approaches are often viewed as the poor man’s audit logging.




Profilers




These tools are certainly different than the first kind. One difference is that they do not require code changes in order to enable or activate them.

They commonly make use of traces that the code leaves while it is executed and functionalities already existent in the frameworks.

For example, stats.log is a good source of performance data that this kind of tools use or might think of using.

For more in-depth definitions of profilers, you can check Wikipedia or this resource.



VisualVM – Oracle



Java VisualVM ships together with your JVM so there is no need to download/install anything.

You can find the executable file under (for example): c:\SoftwareAG\jvm\jvm\bin\jvisualvm.exe.


What VisualVM can do for you is to:

  • monitor application memory consumption
  • monitor application threads
  • profile application performance
  • take thread and heap dumps


You can set it up in 3 simple steps:

  • update the IS wrapper.conf to include the following:
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=5003
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false 
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false


Note: the place and the syntax of the above configuration might vary depending on the version you are using and on the server you are adding it to (IS or MWS)

  • add a new remote host in VisualVM


Note: skip this step is you want to connect to your local IS

  • add a new JMX Connection in VisualVM
Popup appears on right-click on myRemoteHost


Afterward, you will see something similar:


The application has 4 tabs: Overview, Monitor, Threads, and Sampler.

One way you can verify the performance of your services is to:

  • go to the Sampler tab
  • start a sample
  • run the service you suspect has poor performance
  • go back to the Sampler tab
  • analyze the sample


For more details you can check the official documentation available here.

This tool has 1 main advantage and 1 main disadvantage.

Advantage: It’s free and you get it with the Java installation.

Disadvantage: It is not easy on the eyes. It is very hard to find information on the service you are running. You cannot see your IS services execution details, as these type of profilers operate at another level.


For a list of categorized Java profilers, you can check this resource.



SKYProfiler – Software AG



As one can really feel it now, we are living the days of open source and collaboration. Giant companies have opened themselves and contributed to the open source community.

The same goes for SoftwareAG. I can recall that several years ago, this whole area was closed. And locked.

HowTo’s, Good Practices, Proof of Concepts were all deeply buried inside enterprises.

If a new organization needed something new or special, most likely they would call a GCS employee.
Usually, there was not enough documentation and know-how in-house for these topics.

Now it pleases me to see that SAG has released a lot of information and tools on GitHub.

The future is bright.


Coming back to this tool, the first thing that strikes you is the fact that a lot of additional stuff is needed to have it running (extracted from their documentation):

  • Apache Maven
  • Apache Ant
  • MongoDB
  • Zookeeper
  • Apache Kafka
  • bower

This might discourage someone from installing, and consequently, using it.

You can find more details about this tool here and here.

Are there any fans of this tool? Have you installed and used it? Are you content with what it offers?

Leave a comment below. The first one that comments will get my eternal gratitude. 🙂



Service Profiler – Wrightia



Well, this one has been around a while. I think it is one of the first, if not the very first tool targeted to assist with profiling of webMethods services.

Also, it is among the first tools especially build for the webMethods platform by non-SAG organizations.

I have taken this tool for a spin some years ago and I found it very interesting and powerful.

Among the features are:

  • easy install and usage
  • ability to see service statistics (execution count, error calls, execution time with or without child code)
  • small footprint on Integration Server resources
  • non-invasive: no need to change a lot of stuff in your IS to have it running


This tool can be particularly useful to find long-running services, check call stacks, etc.


If I correctly remember, Gerardo worked with Wrightia some time ago, maybe even on this tool. So, if you want, Gerardo, leave a comment with your opinion on this tool.




CPM – CloudGen



CPM stands for CloudGen Performance Monitor. I suggest you use this name instead of the acronym if you want to search it on Google.

A little bit of history and trivia here:

  • CPM is actually the commercial version of a free tool that was well received by the community. This tool was called: RichStatistics
  • CPM also has functionalities from another monitoring tool: RichAudit
  • Finally, CPM was created by the same guy that created CATE DE (a webMethods testing tool)


As per features, I see it on the same level as Wrightia’s Service Profiler.

For an overview of what RichStatistics used to do, be sure to check this link.

And I guess you can always ask CloudGen for a demo if your company is interested in this tool.


Well, there you go. This is the list of service profilers and monitoring tools that you can use with your Integration Server.

Did I forget anything? (might be, I am not getting any younger, you know 🙂 )
Let me know in the comments.

Do some of you have in-house profilers for webMethods services? Let me know as well. I would love to hear about them.


As always, until next time……

Happy exploring,
Tury




Are you tired of not knowing when my next post is going to come out?

No worries! Hit the Sign Me Up! button and you will receive my posts as soon as they are published.

Do you think my ideas would benefit someone you know? Share it! Spread the word! Sharing is caring 🙂


Put your email below and hit the button

7 thoughts on “How to check your Integration Server’s performance

  • Kailash

    Hi Vlad,

    This entire blog series has been so informative and helpful especially for people who want to have a very sound understanding of the nuances of webMethods from bottom up. And to top it off the inquisitive discussions in the comments section is like the icing on the cake.

    But it seems there are no new posts. Would you be writing soon again?

  • Chirag

    I have tried to install SkyProfiler and then given up – as i could not identify how to make it work.

    At high level, Tundra, RichStatistics and SkyProfiler use same / similar method to collect data.
    I have used RichStatistics – but not for long term (as it was causing plenty of memory usage).

    I do follow Lachlan’s Tundra package, I haven’t tried statistics part of it yet.

  • Hi,

    Wrightia’s Service Profiler is available to download from https://www.wrightia.com/serviceprofiler/downloads/ where you can ask for its free trial license.

    It captures all service execution metrics (elapsed time, child services, errors, etc).
    If you have several Integration Servers, you can also collect all their metrics in one central server.

    As a bonus, extra packages are available for Package Dependency Analysis and Service Documentation.

    There is also a package for impact analysis on your server’s performance (usually around 1% to 5%).

    Any questions can be directed to the Service Profiler Team at issprof@wrightia.com

  • Hi Vlad,

    The open source Integration Server package Tundra (https://github.com/Permafrost/Tundra) that I maintain also includes a simple service statistics tool.

    It requires no code changes, it can be enabled and disabled at will while IS is running (via the Integration Server web administration Solutions | Tundra > Service Statistics page once the Tundra package is installed), and while enabled it collects and displays the following service statistics: minimum duration, maximum duration, average duration, standard deviation duration, cumulative duration, and invocation count.

    I’d appreciate if you have time to took a look at this feature of Tundra, and any feedback you have on it.

    Thanks,
    Lachlan

    • Hi Lachlan,

      I have seen the description of your tools (Tundra, TundraTN) within the community pages, but I did not realize that Tundra has also a profiling/monitoring functionality.

      Will definitely check it out.

      Thank you.

  • Bernhard Kreuz

    Hi,

    thanks, thats pretty much what I found as well. And I have not touchted SoftwareAGs tool because it looks a bit complicated to install, but definitely plan to give it a try at some point.

    We looked at CPM and it works nicely.

    Is RichStatistics still available for download somewhere? could not find it anymore.

    • Hi Bernhard,

      Thank you for the feedback.
      As for RichStatistics, it’s rebranding for commercial use made it unavailable for download.

      Below is an extract from the rebranding note:

      “Re-branding Note
      This is a profiler for webMethods Integration Server services. The initial version was called Rich Statistics. The latest version, which has a lot of performance improvements and new features, is sold exclusively by CloudGenSys and is now called CPM (CloudGen Performance Monitor).” (https://synteleo.com/portfolio/rs/)

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: