ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nicholoz Koka Kiknadze" <kikna...@gmail.com>
Subject Re: Thread starvation - pool / Throttle issue?
Date Wed, 06 Aug 2008 12:55:48 GMT
Have a look at this thread:

http://www.mail-archive.com/user-java@ibatis.apache.org/msg11828.html

Good luck

On Wed, Aug 6, 2008 at 4:47 PM, Brian Parkinson <parki@avaning.com> wrote:

> Hello:
>
> So, I have things up and running under Java and iBATIS, but running into
> some starvation issue, and my server is locking up. When I dump threads,
> I see a bunch that are waiting for the connnection pool (see output #1
> below) and as well, a bunch that are waiting on Throttle.increment (see
> output #2).
>
> Has anyone see anything similar?
>
> I am stumped right now - looking for ANY hints to help me track down
> (and fix :) what is going on - I don't know databases all that well, so
> help appreciated greatly. First up, I'm going to upgrade to latest
> version of iBATIS, but thinking I might have something wrong in my
> thread pool setup.
>
> The pool setup:
>
>        <bean id="mapConfig"
> class="org.springframework.core.io.ClassPathResource">
>                <constructor-arg>
>
> <value>com/ecobee/foundation/dao/ibatis/SqlMapConfig.xml</value>
>                </constructor-arg>
>        </bean>
>
>        <bean id="dataSource"
> class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
>                <property name="driverClassName"
> value="com.mysql.jdbc.Driver" />
>                <property name="url" value="jdbc:mysql:///ecobee" />
>                <property name="username" value="XXX" />
>                <property name="password" value="XXX" />
>                <property name="initialSize" value="10" />
>                <property name="maxActive" value="100" />
>                <property name="maxIdle" value="10" />
>        </bean>
>
>        <bean id="sqlMapClient"
> class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
>                <property name="dataSource" ref="dataSource" />
>                <property name="configLocation" ref="mapConfig" />
>        </bean>
>
> I currently have no <settings> element in my SqlMapConfig.xml file, so
> running with those defaults.
>
> Any help is greatly appreciated - I am mystified.
>
> I am using iBATIS 2.3.0.667 and commons dbcp 1.2.2, and running MySQL
> 5.0.32.
>
> Off to upgrade to latest iBATIS as a start -
>
> Cheers,
>
> parki...
>
> --- x8 snip
>
> Output #1:
>
> Thread: Thread[pool-1-thread-121,5,main]=
>  -- java.lang.Object.wait(Native Method)
>  -- java.lang.Object.wait(Object.java:474)
>  --
> org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjec
> tPool.java:810)
>  --
> org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSourc
> e.java:96)
>  --
> org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.ja
> va:880)
>  --
> org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin
> (DataSourceTransactionManager.java:200)
>  --
> org.springframework.transaction.support.AbstractPlatformTransactionManag
> er.getTransaction(AbstractPlatformTransactionManager.java:377)
>  --
> org.springframework.transaction.interceptor.TransactionAspectSupport.cre
> ateTransactionIfNecessary(TransactionAspectSupport.java:261)
>  --
> org.springframework.transaction.interceptor.TransactionInterceptor.invok
> e(TransactionInterceptor.java:101)
>  --
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref
> lectiveMethodInvocation.java:171)
>  --
> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(E
> xposeInvocationInterceptor.java:89)
>  --
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref
> lectiveMethodInvocation.java:171)
>  --
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAo
> pProxy.java:204)
>  -- $Proxy2.saveLogSet(Unknown Source)
>  --
> com.ecobee.communicator.rest.restlet.LogRestlet.doPost(LogRestlet.java:7
> 6)
>  --
> com.ecobee.communicator.rest.RestletManager.handleRequest(RestletManager
> .java:195)
>  --
> com.ecobee.communicator.engine.EngineRequest.handleRequest(EngineRequest
> .java:112)
>  -- sun.reflect.GeneratedMethodAccessor338.invoke(Unknown Source)
>  --
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
>  -- java.lang.reflect.Method.invoke(Method.java:585)
>  --
> com.whatevernot.engine.standard.StateRunnable.run(StateRunnable.java:56)
>  --
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
> r.java:650)
>  --
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
> va:675)
>  -- java.lang.Thread.run(Thread.java:595)
>
> Output #2:
>
> Thread: Thread[pool-1-thread-613,5,main]=
>  -- java.lang.Object.wait(Native Method)
>  -- java.lang.Object.wait(Object.java:474)
>  -- com.ibatis.common.util.Throttle.increment(Throttle.java:70)
>  -- com.ibatis.common.util.ThrottledPool.pop(ThrottledPool.java:57)
>  --
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.popSession(SqlMapEx
> ecutorDelegate.java:933)
>  --
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.<init>(SqlMapSessionImpl
> .java:51)
>  --
> com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.getLocalSqlMapSession(Sql
> MapClientImpl.java:259)
>  --
> com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.startBatch(SqlMapClientIm
> pl.java:161)
>  -- com.ecobee.foundation.dao.ibatis.LogDao.saveLogSet(LogDao.java:22)
>  -- sun.reflect.GeneratedMethodAccessor341.invoke(Unknown Source)
>  --
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
>  -- java.lang.reflect.Method.invoke(Method.java:585)
>  --
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(
> AopUtils.java:301)
>  --
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinp
> oint(ReflectiveMethodInvocation.java:182)
>  --
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref
> lectiveMethodInvocation.java:149)
>  --
> org.springframework.transaction.interceptor.TransactionInterceptor.invok
> e(TransactionInterceptor.java:106)
>  --
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref
> lectiveMethodInvocation.java:171)
>  --
> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(E
> xposeInvocationInterceptor.java:89)
>  --
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref
> lectiveMethodInvocation.java:171)
>  --
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAo
> pProxy.java:204)
>  -- $Proxy2.saveLogSet(Unknown Source)
>  --
> com.ecobee.communicator.rest.restlet.LogRestlet.doPost(LogRestlet.java:7
> 6)
>  --
> com.ecobee.communicator.rest.RestletManager.handleRequest(RestletManager
> .java:195)
>  --
> com.ecobee.communicator.engine.EngineRequest.handleRequest(EngineRequest
> .java:112)
>  -- sun.reflect.GeneratedMethodAccessor338.invoke(Unknown Source)
>  --
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
>  -- java.lang.reflect.Method.invoke(Method.java:585)
>  --
> com.whatevernot.engine.standard.StateRunnable.run(StateRunnable.java:56)
>  --
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
> r.java:650)
>  --
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
> va:675)
>  -- java.lang.Thread.run(Thread.java:595)
>

Mime
View raw message