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.