在出现与TCP关闭套接字相关的nfsd错误后,NFS会失去响应

原文:https://access.redhat.com/solutions/28104

环境

  • Red Hat Enterprise Linux 5,其RPMnfs-utils版本早于1.0.9-47
  • Red Hat Enterprise Linux 6及更高版本

问题

  • 在控制台上看到关于NFS滚动的错误几分钟后,系统变得无响应
  • 在NFS客户端上观察到以下错误消息
kernel: nfs: server server.hostname not responding, still trying
kernel: nfs: server server.hostname OK
  • 在NFS服务器上观察到以下错误消息。
kernel: rpc-srv/tcp: nfsd: got error -104 when sending 140 bytes - shutting down socket

决议

  • 对于RHEL 5:将RPM nfs-utils更新到版本1.0.9-47或更高版本
 # umount /nfs/share
 # yum update nfs-utils
 # mount nfs.example.com:/share /nfs/share
 # rpm -q nfs-utils  ==> shows the upgraded version of nfs-utils

根本原因

  • 出现此问题的原因是NFS线程无法以比客户端更快的速度处理请求。

诊断步骤

  • 检查/var/log/messages文件中的以下错误:
kernel: rpc-srv/tcp: nfsd: got error -104 when sending 140 bytes - shutting down socket
kernel: rpc-srv/tcp: nfsd: got error -104 when sending 140 bytes - shutting down socket
last message repeated 3 times
kernel: rpc-srv/tcp: nfsd: got error -104 when sending 140 bytes - shutting down socket
last message repeated 2 times
last message repeated 13 times
  • 我们需要找出是什么让nfsd进入循环。在这个问题发生后,我们能得到一个内核转储吗?了解nfsd线程挂起的位置可能会很有趣。有关如何在RHEL上启用kexec/kdump的详细步骤,请使用以下文章中的步骤:
    Redhat Enterprise Linux下如何配置kexec/kdump
  • 在系统上启用SysRq功能,并在nfsd挂起时收集sysrq -t 跟踪,然后将结果附加到日志中。在nfsd停止挂起后,再次运行sysrq -t trace。
    什么是SysRq工具以及如何使用它?
  • 当此问题发生时,请在服务器上捕获网络转储,有关如何捕获网络转储的详细信息,请参阅以下文章中的步骤:
    如何使用tcpdump捕获网络数据包?
posted @ 2025-09-08 13:07  LoftyAmbition  阅读(18)  评论(0)    收藏  举报