tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Konstantin Kolinko <>
Subject Re: File leak in 7.0.23?
Date Tue, 03 Jan 2012 00:31:13 GMT
2011/12/31 Janne Jalkanen <>:
> Hi all!
> I am seeing odd behaviour with 7.0.23, with the tomcat user's open file count increasing
slowly, but consistently. Two other instances running the exact same codebase on identical
hardware, BUT with Tomcat 7.0.20, are not exhibiting the same behaviour. 7.0.20 is rock solid,
7.0.23 dies due to too many open files every now and then. I've increased ulimit for now,
but this is still a bit nasty.
> Any suggestions where to look? Should I file a bug?
> lsof says
> ...
> java    21299 ubuntu   87r     sock                0,6       0t0  31983006
can't identify protocol
> java    21299 ubuntu   88r     sock                0,6       0t0  31983007
can't identify protocol
> java    21299 ubuntu   89r     sock                0,6       0t0  31983008
can't identify protocol
> java    21299 ubuntu   90r     sock                0,6       0t0  31989046
can't identify protocol
> java    21299 ubuntu   91r     sock                0,6       0t0  31986504
can't identify protocol
> java    21299 ubuntu   92r     sock                0,6       0t0  31987223
can't identify protocol
> ...
> with a new one every couple of minutes.

I wonder whether it is possible to get some numbers in Access Log to
match with lsof output. So to get a clue what kinds of requests result
in the leak.

a) normal dynamic requests
b) comet or asynchronous requests
c) requests for static files that are served via sendfile

Maybe there are timeouts, or connections closed at client's side.

It should be easy to exclude sendfile:

a) When sendfile is used it is visible in access log, because a static
file is requested and file size that is logged as 0 (until 7.0.24).

b) If it easy to turn it off, by setting useSendfile="false" on a Connector.

> No OOM issues, no errors in log files, until the eventual SocketException when ulimit
is reached:

I wonder whether there were some thread deaths. If that happens the
ThreadGroup.uncaughtException() method will print the stacktrace
directly into System.err. That is it will be written to catalina.out
file (and it wouldn't be written to catalina.log).

Best regards,
Konstantin Kolinko

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message