Hi,
Thanks for the reply. Checked file
descriptors on production , /etc/security/limits.conf says :
zimbra soft nofile 524288
zimbra hard nofile 524288
which is correct as per
Performance Tuning Guidelines for Large Deployments - Zimbra :: Wiki
We have hit the same issue again :
The GC logs analysis looks something like this :
btpool0-2446 waiting for monitor entry
Waiting for: 0x0000002a9f858800 - UNKNOWN
btpool0-2401 is waiting on this thread
btpool0-2406 is waiting on this thread
btpool0-2407 is waiting on this thread
btpool0-2412 is waiting on this thread
btpool0-2413 is waiting on this thread
btpool0-2416 is waiting on this thread
btpool0-2426 is waiting on this thread
btpool0-2434 is waiting on this thread
btpool0-2435 is waiting on this thread
btpool0-2436 is waiting on this thread
btpool0-2438 is waiting on this thread
btpool0-2440 is waiting on this thread
btpool0-2455 is waiting on this thread
"btpool0-2446" prio=1 tid=0x0000002bacc2ec50 nid=0x3eaf waiting for monitor entry
[0x0000000041844000..0x0000000041846ab0]
at com.zimbra.cs.store.FileDescriptorCache.closeIfPru ned(FileDescriptorCache.java:107)
- waiting to lock <0x0000002a9f858800> (a com.zimbra.cs.store.FileDescriptorCache)
at com.zimbra.cs.store.FileDescriptorCache.read(FileD escriptorCache.java:90)
at com.zimbra.cs.store.BlobInputStream.read(BlobInput Stream.java:205)
at com.sun.mail.util.LineInputStream.readLine(LineInp utStream.java:84)
at javax.mail.internet.InternetHeaders.load(InternetH eaders.java:338)
at javax.mail.internet.InternetHeaders.<init>(Interne tHeaders.java:310)
at javax.mail.internet.MimeMessage.createInternetHead ers(MimeMessage.java:2107)
at javax.mail.internet.MimeMessage.parse(MimeMessage. java:328)
at javax.mail.internet.MimeMessage.<init>(MimeMessage .java:205)
at com.sun.mail.handlers.message_rfc822.getContent(me ssage_rfc822.java:98)
at javax.activation.DataSourceDataContentHandler.getC ontent(DataHandler.java:803)
at javax.activation.DataHandler.getContent(DataHandle r.java:550)
at javax.mail.internet.MimeBodyPart.getContent(MimeBo dyPart.java:630)
at com.zimbra.cs.mime.Mime.getMessageContent(Mime.jav a:410)
at com.zimbra.cs.mailbox.CalendarItem.getSubpartMessa ge(CalendarItem.java:2775)
at com.zimbra.cs.mailbox.calendar.Invite.loadDescFrom Blob(Invite.java:819)
- locked <0x0000002ac492a510> (a com.zimbra.cs.mailbox.calendar.Invite)
at com.zimbra.cs.mailbox.calendar.Invite.getDescripti on(Invite.java:808)
- locked <0x0000002ac492a510> (a com.zimbra.cs.mailbox.calendar.Invite)
at com.zimbra.cs.mailbox.calendar.Invite.newToVCompon ent(Invite.java:2135)
at com.zimbra.cs.mailbox.calendar.Invite.toVComponent s(Invite.java:2317)
at com.zimbra.cs.mailbox.Mailbox.writeICalendarForCal endarItems(Mailbox.java:3285)
- locked <0x0000002b625ee468> (a com.yahoo.calendar.cs.mailbox.YCalMailbox)
at com.zimbra.cs.service.formatter.IcsFormatter.forma tCallback(IcsFormatter.java:107)
at com.zimbra.cs.service.formatter.Formatter.format(F ormatter.java:85)
at com.zimbra.cs.service.UserServlet.doAuthGet(UserSe rvlet.java:520)
at com.zimbra.cs.service.UserServlet.doGet(UserServle t.java:423)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:707)
at com.zimbra.cs.servlet.ZimbraServlet.service(Zimbra Servlet.java:181)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(Ser vletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler.handle(Se rvletHandler.java:390)
at org.mortbay.jetty.security.SecurityHandler.handle( SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(Se ssionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(Co ntextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebA ppContext.java:418)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispa tcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispa tcher.java:126)
From the logs, we can make out that this thread is waiting to get lock on filedescriptor cache while all other threads
are waiting on this thread. The method for which this thread is waiting checks if cache does not have the file entry ,
it tries to close the file. It appears , a thread is not able to close the file and therefore holding the lock on
filedescriptor cache , and all other threads are waiting to get lock on filedescriptor cache.
Is there a way to set a timeout for file close operation.
Help/pointers appreciated.
thanks,
Ruchi