|Applies To||RSA ClearTrust 5.5.x Runtime API|
RSA ClearTrust 5.5.x Administrative API
|Issue||Error: "Error in socket accept() on port: 5608,error=java.net.SocketException: Too many open files" in RSA ClearTrust Dispatcher Log|
Whenever a socket connection is opened, a file descriptor is allocated to the connection; the file descriptor is released on closing the socket. Operating systems have limits on the number of file descriptors available; this limit is usually configurable, but generally large enough that starvation indicates a coding error, rather than an insufficiently powerful platform. For example, on Solaris, processes have a default upper limit of 1,024 file descriptors (configurable), while Windows 2000 Server defaults to 16,384 (a 14-bit number). Given the unlikelihood of needing 1,024 concurrent socket connections, the presence of descriptor starvation probably indicates a failure of a high volume process to release the connection.
The ClearTrust dispatcher does not release sockets immediately upon disconnection; thus, under a heavy load, it's possible for a client to exhaust the pool of file descriptors, if new connections are made faster than they can be released
|Resolution||Custom client code should be written to reuse connections, either by maintaining a single connection that is treated as a shared resource, or by using a connection pool/manager.|
NOTE: RSA ClearTrust Agents are written with connection pools that reuse open connections, avoiding having too large a number of simultaneously open connections. This problem could be the result of custom client code that, for example, connects to the Authorizations server each time a request is made to the client to authenticate a user. For more information, see http://support.bea.com/support_news/product_troubleshooting/Too_Many_Open_Files_Pattern.html.
|Legacy Article ID||a23785|