OpenShift调试一例

April 17, 2013

最近做了个贝叶斯算法的演示,在本机跑的很好,一放到OpenShift上就一直503错误。

ssh上去,看到程序已经在运行,想也没想我就把它kill了,然后自己重新运行,发现又可以了,不解。但是每次都有自己ssh上去运行,太麻烦了,而且就这样妥协了感觉不爽。

strace跟踪了一下,发现一直在读/usr/lib/gconv/UTF-32.so,读了又关,读了又关,不断循环。而在本机测试的时候和用ssh手动运行都不会读这个文件。我想问题应该和locate有关,应该有办法让它不读那个文件。

Google了一下,没有找到结果,但是我想到了LANG环境变量,在OpenShift的action hook里用env输出环境变量,发现果然没有设置LANG,而且ssh和本机都设了LANG=en_US.UTF-8

暂时的解决是在start hook里先设置LANG再运行:

LANG=en_US.UTF-8 nohup ./naive-bayesian-demo

然后我在本机unset LANG之后再运行,程序果然会读/usr/lib/gconv/UTF-32.so,但是不会死循环。

虽然能运行了,但是还是不知道是哪里的问题,感觉自己在撞大运,弱爆了。