刚装的 rbenv + ruby 2.1.3 gem search -r compass 的日志
gem sources -a 'https://ruby.taobao.org' 的日志:
系统是 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 一直等待着加锁完成直到超时。