We have a big issue using WSO2 ESB, which could be a reason to go with another BUS.
Sometimes, without any reason, WSO2 stops working. It is not possible insert anything into it.
Normally you obtain a blank page as result of your try. But if you are lucky, the system could return this:
WSO2 Carbon: An error has occured while accessing backend services.
We have try to install a completely new WSO2 ESB without any relation with our WSO2 ESB. We have try to restart the server who stores it and install every app from the beginning, and it gets the same issue.
However, 2 or 3 days later, it is resolved by itself... no reason...
So we cannot be having this issue every week and wait 2 or 3 days to recover our work.
Any suggestion?
Thanks!
It maybe the issue I mentioned here - WSO2ESB 4.8.1 PassThroughHttpSender does not return thread to worker pool on exception the result of it is exactly the same. ESB stops processing any incoming connection because there are no available "worker" threads.
Related
I've installed WSO2 and have it running, devices connected (Android) etc.
I can see the device and the information about it, but the operations log is empty and it's not letting me view the installed applications or deploy new ones.
I've probably missed something basic, but I can't for the life of me see what it is, any help welcome!
Thanks
I hope you are running WSO2 IoT server 3.1.0.
Please follow these steps to enable debug logs.
Go to the IOT_HOME/conf/log4j.properties file.
Uncomment the following two
#log4j.logger.org.apache.synapse.transport.http.wire=DEBUG
#log4j.logger.feign=DEBUG
Comment the following one.
log4j.category.org.apache.synapse=WARN
Then restart the IoT server.
This will start printing debug logs in the IoT_HOME/repository/logs/wso2carbon.log file.
I am getting this "Connection closed by target host before receiving the request" due this first system get time out.
But the problem is that we are getting the proper response from second system.
just provide one major problem
after getting the response from second system we are also getting the one more response.
that i am not able to understand.
the arch is
First System ---- > ESB ---->> second system
response
Second system ---->> ESB then we are going the clone
1. send response to first system
2. send request to DSS to log the request.
can you please help in this...
i am using wso2 esb 4.8.1 and i can not change right now it in production.
Regards,
Shachindra Singh
As you explained in your question, it seems connection between the client and the server has timed out. These kind of lagging can be happen due to the back-end slowness or the ESB server contention. Hence Increasing time out settings could be solve this problem.
By default the ESB closes the connection after 60 seconds. So even you increased the client(which send the request)the timeout the problem will not solve.
For your information in WSO2 ESB can set three types of timeouts:
socket timeout - This parameter will decide on the timeout which a
particular http request is waiting for a response.
endpoint timeout - This will help to configure timeout per endpoint.
synapse global timeout - This will decide the maximum time that a
callback is waiting in the ESB for a response for a particular
request.
Please refer below links [1], [2] to find more detailed information about WSO2 ESB Error Handling. Hopefully it will help you to solve the problem.
[1] http://soatutorials.blogspot.com/2015/06/wso2-esb-error-handling-tutorial-part-i.html
[2] https://docs.wso2.com/display/ESB480/Performance+Tuning
Cheers.
Currently we are using wso2 4.1.0 version. we are using soap based services authentication admin, entitlements service for getting policy decision , getting claims values. we are using cxf for our webservice clients. when we make calls with 500 concurrent users from a single machine everything works fine. but when we make it to 1000 concurrent users we are seeing a huge response time for these service calls from wso2 is. can you tell if there is any configuration change that we need to make for tuning. we increased the wso2 is axis client no. of connections per host but we still didn't see any improvement. By the way we are using the default configuration of wso2 is out of the box
Thanks
Kishore
There are some places you can improve the performances.
1.Increase the memory setting. you can find it in the wso2server script file in /bin. can u increase default value and see.. such as
-Xms1024m -Xmx2048m -XX:MaxPermSize=1024m
2.Increase max thread pool size in catalina-server.xml file which can find in /repository/conf/tomcat
maxThreads="250"
3.Increase caching timeout value. entitlement.properties file which can find in /repository/conf/security
4.Please check you are not authenticating for each request. You need to call AuthenticationAdmin 1st time and get the cookie and then use cookie for subsequence requests.
Else could do use some Jconsole or Jprofiler and see what is going wrong? Also according to your environment, this can be the max load that one server can handle, then you need to do horizontal scaling. (adding WSO2 Identity Server more instance in a cluster)
In wso2, VFS running default 5 minutes. I think this is bad for performance. I want VFS running when server is not busy. For example, maybe at 02:00 no body request, then VFS can work. I tried add scheduled task, but it no use. Anyone can tell me how to do this? Thank you very much.
I think your question is related to WSO2 How to set scheduled task? and https://stackoverflow.com/questions/10537190/how-to-vfs-service-exposed-as-a-web-service questions. Seems you want to do the VFS polling on a particular time of the day (scheduled to a non-peak time) or via a web service. But unfortunately I don't think it's possible to plug a CRON expression or a service call to VFS, because of how VFS transport has been implemented. Anyway you can suggest this as a feature request at WSO2 JIRA
What you are suggesting can lead to starvation. If the ESB server is continuously hit with requests, the VFS task will never run. As mentioned in the ESB documentation you can adjust the polling interval by specifying the transport.PollInterval parameter. An example of increasing the polling interval to 30 minutes can look like this in the ESB configuration:
<parameter name="transport.PollInterval">1800000</parameter>
I need a little help solving an issue regarding .NET web services. I have a desktop application that consumes my main web service. One of the methods gets some report data, but in order to do that, web service (A) calls a method in web service (B). Depending what parameters I pass into "A"s method, it either works or fails. If I pass in a filter, the dataset is pretty small, when I don't pass in a filter obviously the dataset is very large. Additionally, if I run web service "A" in debug mode and point my desktop app to the local version (meanwhile B is on our production server), it works wether I filter the data or not. The error I get is a 502 Bad Gateway on production, and a 502 - Web server received an invalid response while acting as a gateway or proxy server.
We have a web farm with some ARR's, so I went into the web farm's ARR, and found "Proxy" settings and adjusted the timeout to 1200 seconds (whereas my app usually fails within 20-30 seconds) and I'm still receive this error. The HTTP version is in "Pass through" mode with the "keep alive" checkbox checked.
We have no issues using a windows service consuming a web service or anything like that, just when one web service consumes another web service.
Addition,
I'm not using any sessions in my web service methods, and I believe the webmethod I call in web service "B" does have a cacheduration value set of 5 minutes.
I'm scratching my head on this for my lack of knowledge of IIS 7, and many other things. If anyone has any ideas or can point me in the right direction I would certainly appreciate it.
I thought I'd come here and answer this question in case anyone else ran into the same issue. This issue was not server related at all. It was code related. In my code I had a datatable (c#), and was doing a datatable.select(....) where I would pass in a filter with many "OR"'s. Ex. Filter = 'x' OR 'y' OR 'z' etc etc. I had around 100 of these, which caused the datatable.select method to produce a stackoverflow exception. I changed the code to do an "IN (x,y,z)" and it works fine now. Hope this helps someone.