Gem [已解决] gem 提示 ENOLOCK

RainFlying · 2014年12月23日 · 最后由 RainFlying 回复于 2014年12月23日 · 2065 次阅读

刚装的 rbenv + ruby 2.1.3 gem search -r compass 的日志

https://clbin.com/nplXg

gem sources -a 'https://ruby.taobao.org' 的日志:

https://clbin.com/lzZWX

系统是 SLES 11.3 ulimit 的输出

$ ulimit -a core file size (blocks, -c) 1 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 385978 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) 42004192 open files (-n) 131070 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 385978 virtual memory (kbytes, -v) 41211120 file locks (-x) unlimited

问题会是在哪里?

_rubygems._tcp.ruby.taobao.org 这是我用了好几个 DNS Server 都解析不出来, 后来在 DNS Cache 里人肉做了绑定,一样的结果。 $ dig _rubygems._tcp.ruby.taobao.org +short 223.6.253.37

更新: 后来想起 home 目录是从另外一台服务器上挂载过来的 登录到 NFS Server 检查系统日志,发现有 lockd: cannot monitor **** 的日志。 检查 /var/lib/nfs/stated/sm 和 /var/lib/nfs/stated/sm.bak 都是空,不存在结构损坏的问题。 在重启 rpcbind 和 nfslock 服务之后问题依旧, 后重启 nfs 服务,问题解决。 应该是 gem 安装的时候需要 lock 一些文件,因为是 NFS 挂载过来的, 所以 lock 请求发送到 NFS 服务器,但是因为 lockd 响应不正常, 所以 gem 一直等待着加锁完成直到超时。

卧槽 突然想起,home 目录是从另一台服务器上挂载过来的, 我到那台服务器上看看再说。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号