db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kristian Waagan <Kristian.Waa...@Sun.COM>
Subject Re: Derby causes appserver hang with "maxthreads"
Date Fri, 10 Nov 2006 10:32:17 GMT
Hi,

Posted a reply to this on derby-user.
On second thought, I think there might be some technical discussion on 
this, so maybe we should continue the thread here anyway.
Just wanted to let other users aware of the issue.



-- 
Kristian

Jagadish Prasath Ramu wrote:
> Hi,
> I am investigating an issue where Sun Application server hangs
> "temporarily"/"permanently" while talking to Derby Server.
> 
> I could not reproduce the temporary hang. However I could make the hang
> permanent.
> 
> Permanent Hang Steps :
> 
> derby.properties will have the following settings:
> derby.drda.maxThreads=32
> derby.drda.timeslice=2000
> 
> In appserver connection-pool, steady-pool-size is 34 (when the pool is
> initialized 34 connections will be created).
> 
> When the pool is being initialized, derby.log prints that 31 or 32 or 33
> connections had been created and appserver is trying to make another
> connection. Appserver hangs waiting for the response from derby.
> 
> JStack output below :
> ------------------------------------------------------------------------------------------------
> 
> Thread 9782: (state = IN_NATIVE)
>  - java.net.SocketInputStream.socketRead0(java.io.FileDescriptor,
> byte[], int, int, int) @bci=0 (Interpreted frame)
>  - java.net.SocketInputStream.read(byte[], int, int) @bci=84, line=129
> (Interpreted frame)
>  - org.apache.derby.client.net.Reply.fill(int) @bci=34 (Interpreted
> frame)
>  - org.apache.derby.client.net.Reply.ensureALayerDataInBuffer(int)
> @bci=21 (Interpreted frame)
>  - org.apache.derby.client.net.Reply.readDssHeader() @bci=7 (Interpreted
> frame)
>  - org.apache.derby.client.net.Reply.startSameIdChainParse() @bci=1
> (Interpreted frame)
>  -
> org.apache.derby.client.net.NetConnectionReply.readExchangeServerAttributes(org.apache.derby.client.am.Connection)
@bci=1 (Interpreted frame)
>  -
> org.apache.derby.client.net.NetConnection.readServerAttributesAndKeyExchange(int) @bci=8
(Interpreted frame)
>  -
> org.apache.derby.client.net.NetConnection.flowServerAttributesAndKeyExchange(int, byte[])
@bci=22 (Interpreted frame)
>  -
> org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(java.lang.String) @bci=3
(Interpreted frame)
>  -
> org.apache.derby.client.net.NetConnection.flowConnect(java.lang.String,
> int) @bci=163 (Interpreted frame)
>  -
> org.apache.derby.client.net.NetConnection.initialize(java.lang.String,
> java.lang.String, org.apache.derby.jdbc.ClientDataSource, int, boolean)
> @bci=40 (Interpreted frame)
>  -
> org.apache.derby.client.net.NetConnection.<init>(org.apache.derby.client.net.NetLogWriter,
java.lang.String, java.lang.String, org.apache.derby.jdbc.ClientDataSource, int, boolean)
@bci=135 (Interpreted frame)
>  -
> org.apache.derby.jdbc.ClientDataSource.getConnection(java.lang.String,
> java.lang.String) @bci=32 (Interpreted frame)
>  -
> com.sun.gjc.spi.DSManagedConnectionFactory.createManagedConnection(javax.security.auth.Subject,
javax.resource.spi.ConnectionRequestInfo) @bci=77, line=96 (Interpreted frame)
>  -
> com.sun.enterprise.resource.LocalTxConnectorAllocator.createResource()
> @bci=12, line=56 (Interpreted frame)
>  -
> com.sun.enterprise.resource.AbstractResourcePool.createSingleResource(com.sun.enterprise.resource.ResourceAllocator)
@bci=8, line=756 (Interpreted frame)
>  -
> com.sun.enterprise.resource.AbstractResourcePool.createResourceAndAddToPool(com.sun.enterprise.resource.ResourceAllocator)
@bci=2, line=1515 (Interpreted frame)
>  -
> com.sun.enterprise.resource.AbstractResourcePool.createResources(com.sun.enterprise.resource.ResourceAllocator,
int) @bci=9, line=780 (Interpreted frame)
>  -
> com.sun.enterprise.resource.AbstractResourcePool.initPool(com.sun.enterprise.resource.ResourceSpec,
com.sun.enterprise.resource.ResourceAllocator) @bci=27, line=209 (Interpreted frame)
>  -
> com.sun.enterprise.resource.AbstractResourcePool.internalGetResource(com.sun.enterprise.resource.ResourceSpec,
com.sun.enterprise.resource.ResourceAllocator, javax.transaction.Transaction) @bci=10, line=501
(Interpreted frame)
>  -
> com.sun.enterprise.resource.AbstractResourcePool.getResource(com.sun.enterprise.resource.ResourceSpec,
com.sun.enterprise.resource.ResourceAllocator, javax.transaction.Transaction) @bci=37, line=428
(Interpreted frame)
>  -
> com.sun.enterprise.resource.PoolManagerImpl.getResourceFromPool(com.sun.enterprise.resource.ResourceSpec,
com.sun.enterprise.resource.ResourceAllocator, com.sun.enterprise.resource.ClientSecurityInfo,
javax.transaction.Transaction) @bci=16, line=248 (Interpreted frame)
>  -
> com.sun.enterprise.resource.PoolManagerImpl.getResource(com.sun.enterprise.resource.ResourceSpec,
com.sun.enterprise.resource.ResourceAllocator, com.sun.enterprise.resource.ClientSecurityInfo)
@bci=34, line=174 (Interpreted frame)
>  -
> com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(javax.resource.spi.ManagedConnectionFactory,
com.sun.enterprise.deployment.ResourcePrincipal, javax.resource.spi.ConnectionRequestInfo,
boolean, java.lang.String, java.lang.Object, boolean) @bci=388, line=312 (Interpreted frame)
>  -
> com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(javax.resource.spi.ManagedConnectionFactory,
javax.resource.spi.ConnectionRequestInfo, java.lang.String, java.lang.Object) @bci=362, line=222
(Interpreted frame)
>  -
> com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(javax.resource.spi.ManagedConnectionFactory,
javax.resource.spi.ConnectionRequestInfo, java.lang.String) @bci=5, line=152 (Interpreted
frame)
>  -
> com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(javax.resource.spi.ManagedConnectionFactory,
javax.resource.spi.ConnectionRequestInfo) @bci=7, line=145 (Interpreted frame)
>  - com.sun.gjc.spi.base.DataSource.getConnection() @bci=9, line=95
> (Interpreted frame)
> 
> ------------------------------------------------------------------------------------------------
> 
> 
> 1) Can someone please clarify the "maxthreads" & "timeslice" property ?
> 2) The above said hang seems to be permanent. Is this expected
> behavior ?
> 3) Is it possible that when derby server has lesser threads (32) and
> many requests ( > 32 ), derby will respond slowly i.e., user can
> explicitly see that the request is waiting for sometime (30 secs, for
> ex) and then get the response ?
> 
> 
> Thanks,
> -Jagadish
> 
> 
> 
> 
> 


Mime
View raw message