这两天在aws上搭建了一套tfs测试环境,结果在启动nameserver的时候失败了。
具体排查过程如下:
1. 首先怀疑是配置的问题,把配置反复检查了几遍,甚至把线上配置拷贝过来都无法启动。配置文件开启debug后,发现没有日志文件生成。
2. 其次怀疑是数据库的权限和配置问题。校验了一遍发现权限和表数据都是没问题的。
3. 无奈之下听同事的建议,试了下strace。
strace /home/work/app/tfs_server/bin/nameserver -f /home/work/app/tfs_server/conf/ns.conf -d > /tmp/a.log 2>&1
查看日志,结尾内容如下:
rename(“/home/work/app/tfs_server/logs/nameserver.log”, “/home/work/app/tfs_server/logs/nameserver.log.20150310164544”) = 0open(“/home/work/app/tfs_server/logs/nameserver.log”, O_RDWR|O_CREAT|O_APPEND, 0640) = 3
dup2(3, 2) = 2
dup2(3, 1) = 1
close(3) = 0
rt_sigaction(SIGPIPE, {0x1, [PIPE], SA_RESTORER|SA_RESTART, 0x34776302d0}, {SIG_DFL, [], 0}, 8) = 0
getppid() = 19328
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x2b8616906c60) = -1 ENOMEM (Cannot allocate memory)
exit_group(1)
看报错是因为无法获取内存导致的。由于我的测试机器是t1.micro,内存只有600M,换成m3.medium后问题解决。
自己把自己坑了一把,多么痛的领悟啊。多谢同事老何,哈哈。