High CPU utilization in WSO2 ESB - wso2

We are using WSo2 ESB 4.9.0 and our application setup is as follows.
1)Deployed mediator project which has java code to connect MQ(JMS)
2) Mediator project invokes ESB api and ESB api further invokes another ESB API asynchronously. The first api with java mediator project & second api are deployed in different servers
3) The first api has one java rest based micro service and second api has 7 micro services orchestration is done
4) Now we are frequently seeing high cpu utilizations in these two ESB servers and thread dumps are no giving any clue.
All our servers are 8GB RAM and 4 core machines.
Appreciate if anybody can guide me how to troubleshoot these problems

With out details of the Services and configurations its difficult to give an answer. Please look at following references to troubleshoot the issue further.
http://prabu-lk.blogspot.com/2016/05/how-to-monitor-thread-cpu-usage-in-wso2.html
http://sanjeewamalalgoda.blogspot.com/2015/02/how-monitor-wso2-server-cpu-usage-and.html

Related

Has anybody implemented WSO2 to AKS integration (microservices in AKS)?

There is a lag introduced between the WSO2 and the microservice layer running on AKS. Tried to tweak every single parameter recommended by WSO2 but there are slight improvements only. Can anyone help?

Admin services in WSO2 Micro Integrator 7.X (Migrating to New WSO2 Micro Integrator 7.X)

We are doing technical feasibility for migrating to WSO2 Micro Integrator 7.X version.
From the documentation it seems the admin services can now be explored in a REST API way or in a visualized dashboard manner (https://ei.docs.wso2.com/en/latest/micro-integrator/administer-and-observe/working-with-management-api/) .
What about other admin services like AuthenticationAdmin service and others , see link in paranthesis (https://docs.wso2.com/display/EI650/Working+with+Admin+Services). Is it possible to access these back end services in WSO2 Micro Integrator 7, keeping in view that only a micro integrator is used within the plaform.
I am wondering as the footprint of a micro integrator is small , these admin backend services which earlier available may not be accessible within the Micro Integrator at all. Do let me know if that is a correct understanding.
Hi Rajarshi Bhattacharjee
Basically the admin services which were in EI 6x series is no-more in Micro Integrator. These are new REST APIs which are there to retrieve the artifacts. You might see the available rest APIs in https://github.com/wso2/micro-integrator/blob/master/doc/mi-rest-api.md . Please report an issue in https://github.com/wso2/micro-integrator/issues if there is a necessity for other services.
Thanks !
Nirothipan

How to use product of WSO2 correctly?

I have already read many documentations of WSO2, there are some products of WSO2 such as: Enterprise Integration (EI), API Management (APIM), Identity Access Management (IS), Analytics Stream Processing (SP). I can understand the functions of IS and SP.
1. But I dont know what are differences between EI and APIM?
2. When can we use EI? When can we use APIM?
3. Can we merge WSO2 EI and APIM and IS and SP Products to execute all of them on one server?
Sorry for many questions, but I am really confuse in these matters, please give me advice.
WSO2 EI can be used to integrate different systems, orchestrate and then expose as new services/APIs.
WSO2 APIM can be used to manage those services/APIs. You can manage security, rate limiting, CORS, etc. and can see analytics of API usage etc. too. For APIM analytics, there is a customized version of SP which you can download separately.
You can't run all 4 as a single server. Those are 4 runtimes, so you have to start them separately.

WSO2 Stratos Live Services / APIs

currently I´m evaluating WSO2 Stratos LIVE as a public PaaS. I did much research but there are still some questions:
1.) Does WSO2 Stratos Live offer a "multi-tenancy-api" to make Java web applications multi-tenant-aware (something like the Google App Engine Namespace API)?
2.) Is the cartridge-based architecture available (like in WSO2 Stratos 2)?
3.) Are there official API documentations / code samples for all the cloud services? I just found blog posts and webinars. But an official api documentation and code samples would be very great (for example how to unse Identity Server for authentication in Java web applications).
4.) Based on WSO2 API Manager deployment on Stratos, I assume that the API manager is not available as cloud-service?
5.) Do I have hosting options on Stratos Live (e.g. Java Version, the country / Data Center where my app will be hosted)?
6.) Does exist a logs-api to access application logs from my application?
7.) Are there apis for data handling (for example Map Reduce, execution of cron jobs, CDN)?
8.) Do I have a local test environment? I know that there are IDE plugins for an easy deployment. But is it possible to test my app with all WSO2 Stratos Live cloud services local on my machine without connecting to the real services?
I know this is a lot but it would be more than helpful if the WSO2 professionals would help me to answer those questions. As I said, I did much research but those 8 questions are still open.
Thanks a lot and best regards
Ben
See the answers in-line.
1.) Does WSO2 Stratos Live offer a "multi-tenancy-api" to make Java web applications multi-tenant-aware (something like the Google App Engine Namespace API)?
Yes. Your web app can be multi-tenanted.
http://www.youtube.com/watch?v=_lEwm6VzAmo&noredirect=1
http://www.slideshare.net/afkham_azeez/building-a-multitenanted-cloudnative-appserver
2.) Is the cartridge-based architecture available (like in WSO2 Stratos 2)?
Not yet. But our plan is to make Stratos2.0 as the foundation of StratosLive. This will be done after the GA release of Stratos2.0 (it is now in beta stage)
3.) Are there official API documentations / code samples for all the cloud services? I just found blog posts and webinars. But an official api documentation and code samples would be very great (for example how to unse Identity Server for authentication in Java web applications).
All the documents and samples available for WSO2 products are valid for StratosLive. Reason is, we have deployed the very same product in the cloud. We are in the process of filling the documentation gap with regards to StratosLive at the moment.
4.) Based on WSO2 API Manager deployment on Stratos, I assume that the API manager is not available as cloud-service?
Not yet. It will be available in the future.
5.) Do I have hosting options on Stratos Live (e.g. Java Version, the country / Data Center where my app will be hosted)?
No. StratosLive uses shared instances to achieve multi-tenantcy (not like some other PaaSes which uses a JVM per tenant). Therefore, hosting options are not available.
6.) Does exist a logs-api to access application logs from my application?
Yes. We allow the tenants to view system logs and application logs. Unfortunately the API for log viewing is not documented yet.
http://sparkletechthoughts.blogspot.com/2012/09/how-distributed-logging-works-in-wso2.html
7.) Are there apis for data handling (for example Map Reduce, execution of cron jobs, CDN)?
Map reduce related tasks can be handled using toolboxes which can be deployed in WSO2 BAM (monitor.stratoslive.wso2.com). Please check the WSO2 BAM2 documentation for more info.
8.) Do I have a local test environment? I know that there are IDE plugins for an easy deployment. But is it possible to test my app with all WSO2 Stratos Live cloud services local on my machine without connecting to the real services?
You can download and use the Stratos local setup which can be found at http://wso2.com/cloud/stratos

What is the best practices for WSO2 ESB in perticular XSLT transformations

I am working on WSO2 ESB 4.0.3 on MAC OS X Lion (10.7.4)
I would like to know what are the best practices for development for WSO2 ESB 4.0.3.
Currently I am using Data Services Feature in it and existing tomcat application, which we are trying to port to WSO2 ESB, does the SQL query in 2-3 seconds where as WSO2 ESB 4.0.3 with Data Services feature taking around 16-17 secodns.
I would be thankful if some body can let me know best practices for WSO2 and in perticular XSLT transformation.
Hoping for answer.
thanks
Hi Prabath
Here is how my environment is
I am using WSO2 ESB 4.0.3 with Data Services Feature 3.2.2. Proxy service front ends the DS service. Data sources are defined as carbon data sources in datasources.properties.
I tried to run the same service in the WSO2 Data Services Server 2.6.3 and the performance is comparable to what existing tomcat application does but the ESB 4.0.3 with Data Services Feature 3.2.2 takes 8 times more time than tomcat application. Looks like XSLT is not a issue as I thought earlier.
I have all the error handling & input validation in the proxy service which calls this DS.
Also I tried changing it to local for the transport but still same performance issue. Also I have to make sure the format of the forwarded XML is SOAP 12 in the end point definition otherwise proxy service does not forward with local transport.
Can you please suggest so that I can use WSO2 ESB with Data Services Feature 3.2.2 and get comparable performance?
Help really appreciated.
thanks
Abhijit
Hi Prabath
Thanks for reply.
Proxy service validation and transformation is not a problem. Looking at the logs it looks like Data Service deployed in ESB with Data Services feature is taking 8 times more time than the tomcat application. So it is Data Services Feature which is problem I believe and not the proxy service.
Even if we remove the proxy service where you will do the input validations and error handling?
Please let me know.
thanks
Abhijit
Abhijit,
I'm not quite clear of whether this problem is related to executing SQL using dbReport/dbLookup mediators against doing the same thing having data services features installed in ESB OR transforming responses using XSLT at the ESB layer against doing it at the DSS layer.
If it's the former, then you should be able to effectively use the db mediator pair (namely dbLookup and dbreport) to execute simple SQL queries such as SELECT, INSERT, UPDATE, DELETE, etc. However, it is not recommended to do use those mediators to do much complex queries such as stored procedures with "OUT and INOUT" parameters etc as WSO2 DSS is specifically designed to serve any sort of complex queries like that. However, this (using data services) comes at the cost of network latency. Because, you're invoking a data service endpoint through the network which obviously adds the network latency to the end-to-end time taken to get your task done. However, if you're using Data Services features installed in the WSO2 ESB, you always have the option of using "local" transport instead of "http/https" which does an in-JVM call and thus would not dispatch the request over the network.
If this is related to the later, meaning, if you refer to the XSLT transformations, I believe there's no such hard and fast rules in doing this and this would completely depend on your requirements and the usecase. For example, if you're only using WSO2 DSS and want to get some request transformed into a particular format that is expected by the client side, it would only be enough for you to get it done at the WSO2 DSS layer. Because, dispatching it into ESB ONLY for the sake of getting the XSLT transformation done, would add an additional unwanted overhead to the end-to-end completion time of your task. On the other hand, if you're doing this as a part of a configuration flow at the ESB side, then it's perfectly okay to use something like XSLT mediator inside the flow itself.
Hope this helps!
Regards.
Prabath
I hope Prabath already gave the answer to your question.
However, it is not recommended to do use those mediators to do much complex queries such as stored procedures with "OUT and INOUT" parameters etc as WSO2 DSS is specifically designed to serve any sort of complex queries like that. However, this (using data services) comes at the cost of network latency. Because, you're invoking a data service endpoint through the network which obviously adds the network latency to the end-to-end time taken to get your task done. However, if you're using Data Services features installed in the WSO2 ESB, you always have the option of using "local" transport instead of "http/https" which does an in-JVM call and thus would not dispatch the request over the network.