DatabaseBusyException: how to analyze and overcome?
Posted: Mon Apr 23, 2018 1:12 pm
Dear all,
seems like we are running in database connection pool issues:
recently, we started to receive several errors from user activities with omero::DatabaseBusyException:
The OMERO config has a "omero.db.poolsize=80" defined. Postgres is still on the default value of 100 connections.
Any ideas how I could further analyze/debug this issue including hints how to overcome?
Any additional info/output needed?
Thanks a lot in advance, best,
-Rainer
P.S.: by the way, talking about OMERO.server-5.3.4-ice36-b69 and psql (PostgreSQL) 9.4.17 on CentOS 7.4.1708
seems like we are running in database connection pool issues:
recently, we started to receive several errors from user activities with omero::DatabaseBusyException:
- Code: Select all
Internal Server Error: /webclient/
Traceback (most recent call last):
File "/home/omeronas/omeroweb/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/omeronas/OMERO.server/lib/python/omeroweb/decorators.py", line 474, in wrapped
retval = f(request, *args, **kwargs)
File "/home/omeronas/OMERO.server/lib/python/omeroweb/decorators.py", line 524, in wrapper
context = f(request, *args, **kwargs)
File "/home/omeronas/OMERO.server/lib/python/omeroweb/webclient/views.py", line 463, in load_template
url=url, **kwargs)
File "/home/omeronas/OMERO.server/lib/python/omeroweb/webclient/views.py", line 388, in _load_template
conn.getEventContext().groupId)
File "/home/omeronas/OMERO.server/lib/python/omero/gateway/__init__.py", line 2208, in getEventContext
self._ctx = self._proxies['admin'].getEventContext()
File "/home/omeronas/OMERO.server/lib/python/omero/gateway/__init__.py", line 4528, in __call__
return self.handle_exception(e, *args, **kwargs)
File "/home/omeronas/OMERO.server/lib/python/omeroweb/webclient/webclient_gateway.py", line 2025, in handle_exception
e, *args, **kwargs)
File "/home/omeronas/OMERO.server/lib/python/omero/gateway/__init__.py", line 4525, in __call__
return self.f(*args, **kwargs)
File "/home/omeronas/OMERO.server/lib/python/omero_api_IAdmin_ice.py", line 2354, in getEventContext
return _M_omero.api.IAdmin._op_getEventContext.invoke(self, ((), _ctx))
DatabaseBusyException: exception ::omero::DatabaseBusyException
{
serverStackTrace = ome.conditions.DatabaseBusyException: Cannot acquire connection
at ome.services.db.SelfCorrectingDataSource.callWithRetries(SelfCorrectingDataSource.java:113)
at ome.services.db.SelfCorrectingDataSource.getConnection(SelfCorrectingDataSource.java:60)
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:203)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:354)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:103)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at ome.tools.hibernate.ProxyCleanupFilter$Interceptor.invoke(ProxyCleanupFilter.java:249)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at ome.services.util.ServiceHandler.invoke(ServiceHandler.java:121)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy81.getEventContext(Unknown Source)
at sun.reflect.GeneratedMethodAccessor452.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at ome.security.basic.BasicSecurityWiring.invoke(BasicSecurityWiring.java:93)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at ome.services.blitz.fire.AopContextInitializer.invoke(AopContextInitializer.java:43)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy81.getEventContext(Unknown Source)
at sun.reflect.GeneratedMethodAccessor715.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at ome.services.blitz.util.IceMethodInvoker.invoke(IceMethodInvoker.java:172)
at ome.services.throttling.Callback.run(Callback.java:56)
at ome.services.throttling.InThreadThrottlingStrategy.callInvokerOnRawArgs(InThreadThrottlingStrategy.java:56)
at ome.services.blitz.impl.AbstractAmdServant.callInvokerOnRawArgs(AbstractAmdServant.java:140)
at ome.services.blitz.impl.AdminI.getEventContext_async(AdminI.java:217)
at sun.reflect.GeneratedMethodAccessor714.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at omero.cmd.CallContext.invoke(CallContext.java:78)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy82.getEventContext_async(Unknown Source)
at omero.api._IAdminTie.getEventContext_async(_IAdminTie.java:192)
at omero.api._IAdminDisp.___getEventContext(_IAdminDisp.java:1881)
at omero.api._IAdminDisp.__dispatch(_IAdminDisp.java:2041)
at IceInternal.Incoming.invoke(Incoming.java:221)
at Ice.ConnectionI.invokeAll(ConnectionI.java:2536)
at Ice.ConnectionI.dispatch(ConnectionI.java:1145)
at Ice.ConnectionI.message(ConnectionI.java:1056)
at IceInternal.ThreadPool.run(ThreadPool.java:395)
at IceInternal.ThreadPool.access$300(ThreadPool.java:12)
at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:832)
at java.lang.Thread.run(Thread.java:748)
serverExceptionClass = ome.conditions.DatabaseBusyException
message = Cannot acquire connection
backOff = 0
The OMERO config has a "omero.db.poolsize=80" defined. Postgres is still on the default value of 100 connections.
Any ideas how I could further analyze/debug this issue including hints how to overcome?
Any additional info/output needed?
Thanks a lot in advance, best,
-Rainer
P.S.: by the way, talking about OMERO.server-5.3.4-ice36-b69 and psql (PostgreSQL) 9.4.17 on CentOS 7.4.1708