I apologize for how long this post is, but it's a big problem, and I we have already spent 10's of hours on it, so it might take some explaining. Please understand, and read this carefully, to avoid needless back-and-forth. Thank you.
We finally have a customer using our product with a lot of users in production, and we have a problem.
First:
The Informix DB engine, after some days, dies from resource exhaustion, with a number of FD(file descriptor)-type resources above 85,000. Unfortunately, these "resources" can be a lot of things, like DB connections, cursors, result sets, prepared statements, temp tables. Basically, anything in the engine that an application has a "handle" to.
Here are some facts:
Right now, we're logging in and re-starting Tomcat every few nights on the customer's system. Obviously, that has to stop.
It seems the only way for the number of resources in the DB server to change when a window in the browser is opened or closed would be through DataSources. Our code doesn't actually do anything when a window is closed.
We have spent a lot of time (>40 hours) ruling out everything else we can think of. All evidence seems to point to DataSources. We don't have custom code using transactions on DS's in our app; we mostly just connect them to UI widgets, and only to fetch data. (We have to go through a Web Service to change anything.)
We have not set any ConnectionPool properties in smartgwt.properties (does it still use DBCP? The past post I saw to mention that was a long time ago).
From everything we can see, it sure looks like DataSources are creating something and not freeing it.
I've looked at some posts that seem related, but don't seem to give me what I need to resolve this problem:
Also, I have looked at the doc for freeAllResources() and ConnectionPools, without figuring it out.
Can you verify that you have tested ConnectionPooling with Informix, and suggest what my next steps should be?
We finally have a customer using our product with a lot of users in production, and we have a problem.
First:
SmartGwt: 5.0-p20150816
GWT 2.7.0
Java 1.8
Tomcat 7
CentOS 6.6
GWT 2.7.0
Java 1.8
Tomcat 7
CentOS 6.6
The Informix DB engine, after some days, dies from resource exhaustion, with a number of FD(file descriptor)-type resources above 85,000. Unfortunately, these "resources" can be a lot of things, like DB connections, cursors, result sets, prepared statements, temp tables. Basically, anything in the engine that an application has a "handle" to.
Here are some facts:
- The number of resources grows steadily, by maybe 15k - 20k per day, seems to depend on user activity.
- When Tomcat is re-started, the number resets (to <2k). Nothing else seems to decrease it much.
- On a test system with nothing else going on, when I click on almost anything in our app, it goes up by 1-3.
- Closing a window (which should, as far as we know, cause no DB activity) often causes it to go down by 3 or 4.
- Closing a "major" window might make it go down by 10-20, but not as much as it went up when opening it.
Right now, we're logging in and re-starting Tomcat every few nights on the customer's system. Obviously, that has to stop.
It seems the only way for the number of resources in the DB server to change when a window in the browser is opened or closed would be through DataSources. Our code doesn't actually do anything when a window is closed.
We have spent a lot of time (>40 hours) ruling out everything else we can think of. All evidence seems to point to DataSources. We don't have custom code using transactions on DS's in our app; we mostly just connect them to UI widgets, and only to fetch data. (We have to go through a Web Service to change anything.)
We have not set any ConnectionPool properties in smartgwt.properties (does it still use DBCP? The past post I saw to mention that was a long time ago).
From everything we can see, it sure looks like DataSources are creating something and not freeing it.
I've looked at some posts that seem related, but don't seem to give me what I need to resolve this problem:
http://forums.smartclient.com/forum/...-side-requests
http://forums.smartclient.com/forum/...ooling-problem
http://forums.smartclient.com/forum/...-us-an-example
http://forums.smartclient.com/forum/...ooling-problem
http://forums.smartclient.com/forum/...-us-an-example
Also, I have looked at the doc for freeAllResources() and ConnectionPools, without figuring it out.
Can you verify that you have tested ConnectionPooling with Informix, and suggest what my next steps should be?
Comment