我从 Tier 3 供应商支持处听说 NFS 对可以同时执行的并发操作数量有某种限制(我被告知是 16)。
很抱歉,我没有提供更多具体信息,而且谷歌搜索也没有找到我想要的信息。
NFS 的这个硬性限制是否存在?如果存在,有人可以进一步解释一下吗?
答案1
您可以控制 nfsd 实例的数量,但每个 nfsd 实例可能都有多个操作排队等待内核。在 Linux 和 Solaris 中(据我记得),默认值长期以来一直是 8 个进程,但有很多情况下增加这个数字是有意义的。不过,我还没有听说过 NFS 协议中对并发性有任何绝对限制。
答案2
没有连接限制,但是端口选择有一些实际限制,如 NFS 手册页中所述:
NFS 客户端通常通过网络套接字与 NFS 服务器通信。套接字的每一端都分配有一个端口值,该值只是一个介于 1 和 65535 之间的数字,用于区分同一 IP 地址上的套接字端点。套接字由一个元组唯一定义,该元组包含传输协议(TCP 或 UDP)以及两个端点的端口值和 IP 地址。
NFS 客户端可以为其套接字选择任何源端口值,但通常会选择特权端口。特权端口是小于 1024 的端口值。只有具有 root 权限的进程才能创建具有特权源端口的套接字。
可以选择的特权源端口的确切范围由一对 sysctl 设置,以避免选择众所周知的端口,例如 ssh 使用的端口。这意味着 NFS 客户端可用的源端口数量,以及因此可以同时使用的套接字连接数量实际上仅限于几百个。
答案3
您可能正在考虑sunrpc.tcp_slot_table_entries
在挂载给定文件系统之前需要设置哪些内容。
在 RHEL 6.3 之前,这个值是静态的 16,为了消除瓶颈,通常会将其提高到 128。在 6.3 中,它变成了自我调整和自动调节 - 请参阅下面的 P22关联。