NFS는 TCP 유지 시간을 무시합니까?

NFS는 TCP 유지 시간을 무시합니까?
  1. NFS 서버 연결이 끊어졌습니다.
  2. NFS 클라이언트가 서버 연결이 끊어졌음을 감지합니다.
  3. 클라이언트가 다시 연결을 시도합니다.
  4. 서버가 다시 나타나고 성공적으로 다시 연결되었습니다.

TCP keepalive, 연결 시간 초과가 뭔가를 하고 있는 것 같지만 /proc/sys/net/ipv4/에서 찾은 기본 keepalive 시간은 7200입니다.

그래서 NFS가 tcp keepalive 시간을 덮어쓴 것 같습니다.

현재 문제는 NFS 클라이언트가 서버를 감지하고 아래 메시지를 표시하는 데 몇 분이 걸릴 때 이 시간을 단축하고 싶다는 것입니다(위의 3번).

"nfs: 서버가 응답하지 않지만 여전히 시도 중입니다."

폴링 시간을 측정해보았는데,

  1. 24초
  2. 72초(24초 + (24초 * 2 = 48초))
  3. 16초(72초 + (48초 * 2 = 96초))
  4. 360초(168초 + (96초 * 2 = 192초))
  5. 660초(+300초)
  6. 960초(+300초)

24 -> 48 -> 96 -> 192 -> 300 -> 300

이 "300"을 어디서 찾을 수 있는지 아는 사람 있나요? 아니면 TCP keepalive 시간 이외의 다른 문제로 인한 것입니까?

답변1

예, NFS 클라이언트는 keepalive 설정을 무시합니다. 이는 "timeo" 마운트 옵션에서 파생됩니다. 바라보다http://lxr.free-electrons.com/source/net/sunrpc/xprtsock.c낮은 수준의 세부정보입니다.

관련 정보