I heard from Tier 3 vendor support that NFS has some sort of limit (I was told 16) as to the number of concurrent operations that can be executing at the same time.

I apologize that I don't have any more specifics, and some Googling hasn't turned up what I am looking for.

Does this hard limitation of NFS exist, and if so, could someone explain a bit more about it?


You can control the number of instances of nfsd but each instance of nfsd might have multiple operations queued with the kernel. In Linux and Solaris (as far as I remember) the default has been 8 processes for a long time but there are plenty of circumstances where it makes sense to increase this number. I haven't heard of any absolute limit to concurrency in NFS as a protocol, however.

| improve this answer | |

There are no connection limits as such, but there are some practical limits imposed by port selection, as outlined in the man page for NFS:

NFS clients usually communicate with NFS servers via network sockets. Each end of a socket is assigned a port value, which is simply a number between 1 and 65535 that distinguishes socket endpoints at the same IP address. A socket is uniquely defined by a tuple that includes the transport protocol (TCP or UDP) and the port values and IP addresses of both endpoints.

The NFS client can choose any source port value for its sockets, but usually chooses a privileged port. A privileged port is a port value less than 1024. Only a process with root privileges may create a socket with a privileged source port.

The exact range of privileged source ports that can be chosen is set by a pair of sysctls to avoid choosing a well-known port, such as the port used by ssh. This means the number of source ports available for the NFS client, and therefore the number of socket connections that can be used at the same time, is practically limited to only a few hundred.

| improve this answer | |
  • What does this means. What if we want a NFS share to serve 6 servers, and each want to have 1k open files ? – Freedo May 27 at 8:43

You're probably thinking of sunrpc.tcp_slot_table_entries which needs to be set before mounting a given filesystem.

Up to RHEL 6.3, this was a static value of 16 which is often pushed up to 128 to remove a bottleneck. In 6.3, this becomes self tuning and auto-adjusting - see P22 of the following link.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.