My dear readers,
Welcome to 2019. It has been a while since my last published post, but I am back and ready to…
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 🙂
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.
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,
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.
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.
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
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
- Apache Kafka
This might discourage someone from installing, and consequently, using it.
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
Well, there you go. This is the list of service profilers and monitoring tools that you can use with your Integration S
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……
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 🙂