You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Eric Phetteplace (JIRA)" <ji...@apache.org> on 2009/12/19 19:26:18 UTC
[jira] Updated: (GERONIMO-4993) Requests for db pool resources will
exceed Max Pool Size when EJBNetworkService beans are all busy
[ https://issues.apache.org/jira/browse/GERONIMO-4993?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Phetteplace updated GERONIMO-4993:
---------------------------------------
Attachment: _PoolTest.war
Simple WAR:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException
{
DataSource ds = null;
Connection con = null;
InitialContext ctx = null;
try {
ctx = new InitialContext();
ds = (DataSource) ctx
.lookup("java:comp/env/jdbc/ArchiveDS");
con = ds.getConnection();
Thread.sleep(30000);
} catch (Exception e) {
logger.error(e.getMessage());
throw new ServletException(e.getMessage());
} finally{
if(ctx!=null) try {ctx.close();} catch(Exception ex){}
con=null;
}
}
> Requests for db pool resources will exceed Max Pool Size when EJBNetworkService beans are all busy
> --------------------------------------------------------------------------------------------------
>
> Key: GERONIMO-4993
> URL: https://issues.apache.org/jira/browse/GERONIMO-4993
> Project: Geronimo
> Issue Type: Bug
> Security Level: public(Regular issues)
> Affects Versions: 2.1.3, 2.2
> Environment: Linux and Windows XP
> Reporter: Eric Phetteplace
> Attachments: _PoolTest.war
>
>
> In production, I have 100 EJBNetworkService threads. It works OK until there's a spike in traffic and all the threads are being used, and the 40 "max pool size" is ignored, and Geronimo makes 100's of DB connections.
> In production, I am using an Oracle DB pool, so the DBAs aren't happy when my servers use up all the available server connections.
> To recreate:
> 1. Change config.xml and start Geronimo:
> <module name="org.apache.geronimo.configs/openejb/2.2-SNAPSHOT/car">
> <gbean name="EJBNetworkService">
> <attribute name="port">${OpenEJBPort + PortOffset}</attribute>
> <attribute name="host">${ServerHostname}</attribute>
> <attribute name="multicastHost">${MulticastDiscoveryAddress}</attribute>
> <attribute name="multicastPort">${MulticastDiscoveryPort}</attribute>
> <attribute name="clusterName">${ClusterName}</attribute>
> *<attribute name="threads">5</attribute>*
> </gbean>
> 2. Reconfigure the jdbc/ArchiveDS DB Pool:
> Max Pool Size: 3
> Blocking Timeout: 1000
> Idle Timeout: 1
> 3. Install WAR
> 4. In web browser, go to http://localhost:8080/PoolTest/PoolTest. Reload it 5 times. Take your time It should be fine, and will give you an error when the pool is maxed.
> 5. In JMX Viewer, go to Geronimo MBeans, JCAConnectionManager, and pull up jdbc/ArchiveDS. Note the connection count. Looks good.
> 6. Wait for the connection count to return to 0.
> 7. In your browser, hold down F5 so the page reloads many times.
> 8. Observe the connection count again. It will be over connections.
> 9. If you repeat 6-9 you can easily get > 20 connections. I just held F5 for 6 seconds and there are 60 connections.
> I will attach WAR (I don't see an option on this screen).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.