During last week I've run with my up to now smoothly running ox 6.18.0 rev7 install into very weird troubles with incresing number of groupware java process threads. The symptoms are: webmail login hangs at 10%, no http login possible and there are following repeating messages in open-xchange.log after hang problems start:
Well, looking closer at running processes discloses that there are over 4000 groupware threads running:
But there is actually nothing going on on this test system at the moment !
Before this hang happens, there are about 66-71 threads on ox and it takes about 2 days for thread count to explode.
The only change I did before this happened was to setup an funambol server with ox-listener (+ sessionid patch) which seems to work. There are 2 syncml clients on funambol. Prior explosion, I can see only these messages in open-xchange log for the 2 test users:
which repeats every 1 minute (seems to be a non-optimal funambol/ox-listener default ...) until thread explosion happens. Well, I can see here just 2 logins and 2 clean logouts, nothing suspect.
While there might be some relevant settings in threadpool.properties to play with list limit the number of threads etc., it seems to me rather like some bug. If I understand the threadpool, any idle/zombie threads should be terminated anyway after 60seconds.
Restarting the open-xchange-groupware solves always the problem for another 2 days.
And yes, this is running on sun java 1.6.0_u22
Martin, any idea why this happens or where to look further ?
Code:
Dec 12, 2010 12:46:03 PM com.openexchange.ajp13.najp.AJPv13TaskWatcher$TaskRunCallable handleExceededTask INFO: AJP Listener "AJPListener-0003027" exceeds max. running time of 60000msec -> Processing time: 1468589msec java.lang.Throwable at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987) at com.openexchange.mail.api.MailAccess.getInstance(MailAccess.java:262) at com.openexchange.mail.MailServletInterfaceImpl.initMailAccess(MailServletInterfaceImpl.java:1574) at com.openexchange.mail.MailServletInterfaceImpl.initConnection(MailServletInterfaceImpl.java:1558) at com.openexchange.mail.MailServletInterfaceImpl.getTrashFolder(MailServletInterfaceImpl.java:1525) at com.openexchange.groupware.settings.tree.modules.mail.folder.Trash$1.getValue(Trash.java:106) at com.openexchange.groupware.settings.impl.RdbSettingStorage.readSharedValue(RdbSettingStorage.java:338) at com.openexchange.groupware.settings.impl.RdbSettingStorage.readValues(RdbSettingStorage.java:280) at com.openexchange.groupware.settings.impl.RdbSettingStorage.readSubValues(RdbSettingStorage.java:389) at com.openexchange.groupware.settings.impl.RdbSettingStorage.readValues(RdbSettingStorage.java:276) at com.openexchange.groupware.settings.impl.RdbSettingStorage.readSubValues(RdbSettingStorage.java:389) at com.openexchange.groupware.settings.impl.RdbSettingStorage.readValues(RdbSettingStorage.java:276) at com.openexchange.groupware.settings.impl.RdbSettingStorage.readSubValues(RdbSettingStorage.java:389) at com.openexchange.groupware.settings.impl.RdbSettingStorage.readValues(RdbSettingStorage.java:276) at com.openexchange.ajax.ConfigMenu.doGet(ConfigMenu.java:107) at javax.servlet.http.HttpServlet.service(HttpServlet.java:596) at com.openexchange.ajax.AJAXServlet.service(AJAXServlet.java:392) at com.openexchange.ajax.SessionServlet.service(SessionServlet.java:174) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at com.openexchange.ajp13.najp.AJPv13RequestHandlerImpl.doServletService(AJPv13RequestHandlerImpl.java:504) at com.openexchange.ajp13.AJPv13Request.response(AJPv13Request.java:129) at com.openexchange.ajp13.najp.AJPv13RequestHandlerImpl.createResponse(AJPv13RequestHandlerImpl.java:316) at com.openexchange.ajp13.najp.AJPv13ConnectionImpl.createResponse(AJPv13ConnectionImpl.java:207) at com.openexchange.ajp13.najp.AJPv13Task.call(AJPv13Task.java:346) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at com.openexchange.threadpool.internal.CustomThreadPoolExecutor$Worker.runTask(CustomThreadPoolExecutor.java:738) at com.openexchange.threadpool.internal.CustomThreadPoolExecutor$Worker.run(CustomThreadPoolExecutor.java:764) at java.lang.Thread.run(Thread.java:619) Dec 12, 2010 12:46:03 PM com.openexchange.ajp13.najp.AJPv13TaskWatcher$TaskRunCallable keepAliveGetEmptyBody INFO: AJP KEEP-ALIVE: Flushed empty GET-BODY request to socket "/127.0.0.1:51366" to initiate a KEEP-ALIVE poll. Dec 12, 2010 12:46:03 PM com.openexchange.ajp13.najp.AJPv13TaskWatcher$TaskRunCallable keepAliveGetEmptyBody INFO: AJP KEEP-ALIVE: Swallowed empty REQUEST-BODY from socket "/127.0.0.1:51366" initiated by former KEEP-ALIVE poll. Dec 12, 2010 12:46:03 PM com.openexchange.ajp13.najp.AJPv13TaskWatcher$TaskRunCallable keepAliveGetEmptyBody INFO: AJP KEEP-ALIVE: Flushed empty GET-BODY request to socket "/127.0.0.1:51252" to initiate a KEEP-ALIVE poll. Dec 12, 2010 12:46:03 PM com.openexchange.ajp13.najp.AJPv13TaskWatcher$TaskRunCallable keepAliveGetEmptyBody INFO: AJP KEEP-ALIVE: Swallowed empty REQUEST-BODY from socket "/127.0.0.1:51252" initiated by former KEEP-ALIVE poll. Dec 12, 2010 12:46:33 PM com.openexchange.ajp13.najp.AJPv13TaskWatcher$TaskRunCallable handleExceededTask INFO: AJP Listener "AJPListener-0004973" exceeds max. running time of 60000msec -> Processing time: 1397705msec
Code:
java.lang:type=Threading,ThreadCount = 4640 java.lang:type=Threading,TotalStartedThreadCount = 48162
Before this hang happens, there are about 66-71 threads on ox and it takes about 2 days for thread count to explode.
The only change I did before this happened was to setup an funambol server with ox-listener (+ sessionid patch) which seems to work. There are 2 syncml clients on funambol. Prior explosion, I can see only these messages in open-xchange log for the 2 test users:
Code:
Dec 10, 2010 7:31:39 PM com.openexchange.authentication.imap.impl.IMAPAuthentication handleLoginInfo INFO: Imap authentication for user user1 successful on host localhost:143 Dec 10, 2010 7:31:39 PM com.openexchange.authentication.imap.impl.IMAPAuthentication handleLoginInfo INFO: Imap authentication for user user2 successful on host localhost:143 Dec 10, 2010 7:31:39 PM com.openexchange.login.internal.LoginPerformer logLoginRequest INFO: Login:user1 IP:192.168.100.15 AuthID:114f59454c1d456595a0f2950aa5430f Agent:Jakarta Commons-HttpClient/3.0 Client:default(null) Interface:HTTP_JSON Context:1(1,defaultcontext) User:62(user1) Session:0fb1d0399742473685ed2963659576f2 Dec 10, 2010 7:31:39 PM com.openexchange.login.internal.LoginPerformer logLoginRequest INFO: Login:user2 IP:192.168.100.15 AuthID:0c200cb57e954f9eb49c9733cd6097fb Agent:Jakarta Commons-HttpClient/3.0 Client:default(null) Interface:HTTP_JSON Context:1(1,defaultcontext) User:24(user2) Session:b42b1d57856649ea9b69e16ad5dcf3c0 Dec 10, 2010 7:31:39 PM com.openexchange.login.internal.LoginPerformer logLogout INFO: Logout Context:1(1,defaultcontext) User:62(user1) Session:0fb1d0399742473685ed2963659576f2 Dec 10, 2010 7:31:39 PM com.openexchange.login.internal.LoginPerformer logLogout INFO: Logout Context:1(1,defaultcontext) User:24(user2) Session:b42b1d57856649ea9b69e16ad5dcf3c0
While there might be some relevant settings in threadpool.properties to play with list limit the number of threads etc., it seems to me rather like some bug. If I understand the threadpool, any idle/zombie threads should be terminated anyway after 60seconds.
Restarting the open-xchange-groupware solves always the problem for another 2 days.
And yes, this is running on sun java 1.6.0_u22
Martin, any idea why this happens or where to look further ?
Comment