NFS 为什么会 HANG,原因应该如何分析?| 运维进阶
【作者】白鳝(徐戟),南京基石数据技术有限责任公司技术总监,在软件开发、系统运维、信息系统优化、信息系统国产化替代等领域从事技术研究近30年,曾主持开发了国内首套电信级联机实时计费系统、国内首套三检合一的检验检疫管理系统、银行综合大前置平台(IPP)等大型系统。著有《Oracle RAC日记》、《Oracle DBA优化日记》和《DBA的思想天空》等技术专著。信息无障碍研究会专职顾问,深圳市鲲鹏产业联盟高级顾问,Oracle ACE,POSTGRESQL ACE DIRECTOR。个人微信公众号:白鳝的洞穴
有个朋友咨询一个问题,他通过NFS MOUNT了一个分布式文件系统,发现对这个文件系统df的时候经常hang死,他检查了一番系统,发现内存使用率很高,大部分物理内存都被cache占用了。他想通过分析cache中都有哪些数据,通过这个分析来确认cache占用率高和NFS hang之间是否存在关联关系。当时我的建议是首先不要把问题直接定位到OS内存上,如果系统不存在严重的SWAP,哪怕物理内存使用率达到98%,也是关系不大的。
实际上使用NFS文件系统,出现客户端hang死,或者df命令HANG死的情况并不少见,我这些年里也遇到过多次。我遇到的NFS hang死问题的原因也十分复杂,不过大多数都与NFS BUG、网络问题、系统资源消耗过高、IO负载过大等有关。NFS客户端访问NFS文件hang住,一般来说有三种可能性,一种是客户端出现问题,第二种是服务端出现问题,第三种是客户端和服务端都存在问题。似乎这个总结有点太笼统了,也有点投机取巧,不过穷举法是我们在针对未知问题分析的最重要的方法。如果我们不能穷举所有的可能性,那么在问题诊断分析的时候就可能无法定位。在我多年的经验里,很多当时认为十分灵异的问题,都是因为我们以前的知识面不足,无法穷举到真正的故障路径。
net.ipv4.tcp_keepalive_time
net.ipv4.tcp_keepalive_intvl
net.ipv4.tcp_keepalive_probes
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15
实际上NFS HANG的问题分析因为涉及的原因很多,所以往往还是不容易定位的,不过如果df命令hang,而且是可重现的,那么分析起来还是有方法的。最好的防范就是使用strace去跟踪df命令的堆栈。看看hang在什么地方,就比较容易定位问题了。最后要说明的是,messages日志是一定要首要分析的,不管是客户端还是服务端的messages日志都应该尽早去看。虽然说很可能我们看到的只是NFS命令超时这类的比较笼统的信息。
原题:NFS 为什么会 HANG,原因应该如何分析?如有任何问题,可点击文末阅读原文,到社区提问
觉得本文有用,请转发或点击“在看”,让更多同行看到
资料/文章推荐:
企业IT运维事中故障定位方法及工具
企业运维故障复盘步骤及改进方法
IT 运维中的事件、故障排查处理思路
欢迎关注社区以下 “运维”技术主题 ,将会不断更新优质资料、文章。地址:https://www.talkwithtrend.com/Topic/4549
下载 twt 社区客户端 APP
长按识别二维码即可下载
或到应用商店搜索“twt”
长按二维码关注公众号
*本公众号所发布内容仅代表作者观点,不代表社区立场
这篇关于NFS 为什么会 HANG,原因应该如何分析?| 运维进阶的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!