最近做了个贝叶斯算法的演示,在本机跑的很好,一放到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
,但是不会死循环。
虽然能运行了,但是还是不知道是哪里的问题,感觉自己在撞大运,弱爆了。