book
Article ID: KB0092278
calendar_today
Updated On:
Description
Resolution:
The message "too many open files." indicates:
-- you may be running out of file descriptors.
In most systems, the default is 256 and is often too low. Please ask your system administrator to increase the soft and hard limit for the file descriptor, and you may need to reboot the machine.
-- TIBCO Enterprise for EMS, uses file descriptors when a file is open and when sockets are created. Therefore, the number of file descriptors used by the EMS Server will increase with the number of client applications connected to the EMS Server.
In the admin tool, the command "info" will give you the number of connections opened. Each connection consumes a file descriptor.
When the server is started, it opens also the db files and therefore consumes fds.
When routes are defined, you have tcp connections, so again, fds consumed.
Note that all processes opening files/sockets consume file descriptors.
Therefore, to set your limit, you have to take into consideration other applications running on the same machine.
-- Please be also aware that there is a long-standing known issue on Solaris with stdio.
You may face the OS limitation of stdio. No more than 255 files may be opened using fopen(),and only file descriptors 0 through 255 can be used in a stream. File descriptors (fd) are used when opening files but also when using sockets. The JMS/EMS Server will consume one fd for each connected JMS/EMS client. When the number of file descriptor used by the JMS/EMS Server is greater than 255 (that is, a bit more than 250 JMS/EMS clients connected), and an admin command is issued that would require the JMS/EMS Server to open or create a configuration file (for instance, adding an user, or a queue, or deleting it, etc...) or when the JMS/EMS Server attempts to rotate the log, the command would fail. The reason is that the next available file descriptor will be greater than 255.
-- The solution to this problem is to use tibjmsd64/tibemsd64 (that is linked with 64bits libraries), which overcomes the stdio limitation.
Issue/Introduction
I see a lot of following errors on my ems log:
ERROR: Accept() failed: too many open files. Please check per-process and system-wide limits on the number of open files
What can I do to get rid of this?