Open topic with navigation

TIBCO Rendezvous® 8.7.0

# File Descriptor Limits

On UNIX, IBM i and z/OS platforms, the operating system can limit the maximum number of file descriptors per process, as well as the total number of file descriptors summed over all processes. Because each connection uses a file descriptor, this limitation in turn limits the capacity of Rendezvous components:

| • | In `rvd` and its variants, it limits the maximum number of client connections (that is, transports) that a daemon can accept.

| • | In `rvrd` and its variants, it limits the combined total of neighbor connections and client connections.

| • | In client programs, it limits the number of transport objects.

Symptoms

When operating system file descriptor limits are set too low, Rendezvous components might report errors indicating that too many files are open, or that file descriptor limits have been exceeded. In many situations, you can eliminate this problem by raising the limit.

## UNIX Resource Inheritance

In a UNIX environment, when a Rendezvous client program automatically starts a daemon process, the daemon becomes a child process of the client. As a child, the daemon inherits all the file descriptors and sockets that are open in the client process (for example, the descriptor associated with an open log file). Even after the client process (parent) closes the resource and exits, the resource remains open in the daemon process (child) until the daemon exits. Furthermore, the operating system does not release the space associated with a file that was open in the parent process until the child process exits.

For this reason we do not recommend using the auto-start feature in production environments. Consider the following solutions:

| • | Start daemons explicitly (instead of relying on the client to automatically start its daemon).

For a tactic that might be helpful in implementing this solution, see Suppress Daemon Auto-Start on page 86 in TIBCO Rendezvous Concepts.

| • | Ensure that clients auto-start the daemon before opening any file descriptors or sockets. In this way, the daemon does not inherit these resources (other than `stderr`).

| • | Create a script that explicitly closes the inherited resources before starting the daemon.

The auto-start feature calls an executable file named `rvd`. You can substitute your own script named `rvd` that explicitly closes inherited resources.

Did you find this helpful?

Yes No
Great!
Thanks for taking the time to give us some feedback.
Sorry about that

Why wasn't this helpful? (check all that apply)

Could not find what I was looking for
Instructions confusing or unclear
Instructions did not work

Want to tell us more?

Please select at least one option or provide details about the issue!!

Error occurred while submitting feedback.

Error2 occurred while submitting feedback.

TIBCO Rendezvous®

Copyright © 1997-2023. Cloud Software Group, Inc. All Rights Reserved.