Lustre文件锁问题

当多个进程尝试同时读取Lustre文件系统上的LMDB数据库时,出现进程Hang的问题。经过排查,非系统打开文件数达到上限,也非lustre挂载参数问题。通过gdb调试发现,是由于LMDB在打开文件时使用了F_WRLCK排他锁导致。最终解决方案是在mdb_env_open函数中添加MDB_NOLOCK参数,避免文件锁定。
摘要由CSDN通过智能技术生成

问题现象:进程读取文件Hang,单进程读取正常,多个进程同时读取出现Hang,多个进程若在同一台服务器上提交,也可正常运行。



问题分析:从现象来看,分析可能产生的原因。
1、linux下同时打开文件数达到最大值?
2、mount挂载时缺少相关参数导致?

第一个问题比较好排查,ulimit -a即可查看当前配置的open files大小,再通过lsof / |wc -l即可统计当前打开的文件数量,通过查看当前系统打开的文件数量还远远未达到限制。




第二个问题需要做几次验证测试,lustre挂载命令中有个参数localflock、flock、noflock,集群当前客户端挂载统一使用的是localflock,于是将flock、noflock分别添加进行测试
,测试结果发现localflock和flock效果相同,对我们的任务没什么影响,如果使用noflock,不加锁,任务提交会失败。
至此,设想的两种可能都被排除。
为了更深层次了解程序运行状况,使用gdb进行调试,查看程序到底是hang在了什么位置:

正如所预料的,有一个CPU使用率为0的进程,卡在申请锁上:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值