Hello Andreas,
thank you very much for your valuable hints.
sudo lsof -p basex-ps-no
delivers many lines of
java 11489 root 962u sock 0,6 0t0 10449645 can't
identify protocol
and
(1) sudo lsof -p 11489 | wc -l gets
reports an increasing number of used "files". The increase of the number
in (1) in a given time interval
correlates to the number of requests that the LVM load balancer sends to
the basex port 1984
in that interval. There are about 4 requests from the LVM load balancer
per minute.
At the time of this writing (1) has the value of 1076 ...
The parameter keepalive has the value
KEEPALIVE = 600
but it does not seem to stop the increase of the value in (1).
This information opens the way to workarounds
- decrease the number of requests from the LVM load balancer,
- increase the ulimit -n
- restart the basex -server before the number in one reaches ulimt -n.
But we really would prefer solutions to the increase of the figure in (1)
The almost identical settings of the load balancer do work for a
MySQL-Database without any problems.
And without the load balancer an instance of the basex runs since April
10 without hitting ulimit -n = 1024.
Any hints on this are very welcome!
With kind regards,
Andreas
> I just searched our mailing list, cause there was something about too many open files some time ago:
>
>> On typical Linux installations, die open filedescriptor limit is 1024:
>>
>> $ grep 'open files' /proc/self/limits
>> Max open files 1024 1024 files
>>
>> In Java, if a file-based object (FileWriter, FileReader, etc.) is not closed, the underlying file descriptor is not closed. Bug detectors (FindBugs) check for that intraprocedurally. I recommend you run both BaseX as well as this application through it.
>>
>> If an open file-based object becomes unreachable, the finalizer will eventually close it - but it's possible to run out of open file descriptors simply due to unreachable, but not yet finalized objects. (Of course, if the object is leaked, it won't be closed ever.)
>>
>> In Linux, use 'ps' to find out the pid of the Java JVM process, then do a ls -l /proc/<pid>/fds to see which file descriptors the process in question has open; or use the 'lsof' command.
>>
>> - Godmar
> Probably that helps to investigate the issue.
>
>
--
Nexoma GmbH
Theodorus Weg 7
59755 Arnsberg
Tel. + 49 (0) 52 51 1613-0
Fax + 49 (0) 52 51 1613-99
mailto:andreas.rulle@nexoma.de
Geschäftsführer: Guido Sauerland
Sitz der Gesellschaft: Arnsberg
Registergericht: Arnsberg, HRB 9365