Nginx Unit中无法找到unit-go子进程且curl请求超时求助
Nginx Unit + Go 应用启动异常排查方案
我之前碰到过类似的问题,给你几个实用的排查方向,一步步来定位:
优先查看Unit日志,定位启动失败原因
Unit的日志默认在/var/log/unitd.log,这里面会记录所有应用启动的细节,包括错误信息。我之前就是因为写错了executable路径,日志里直接抛出了“file not found”的报错,一下子就找到了问题。赶紧去看看日志里有没有Go应用启动相关的错误,比如权限不足、程序启动崩溃、依赖缺失之类的。手动测试Go程序本身是否能正常运行
先脱离Unit,直接在命令行执行你的Go程序:/tmp/unit-go,看看程序能不能正常启动、有没有报错输出。如果程序本身启动就退出(比如代码里有panic、没有正确监听端口,或者编译时没打包好依赖),那Unit启动它之后也会瞬间退出,ps自然抓不到进程。检查权限是否符合要求
从你的ps输出能看到,Unit的controller和router进程是用nobody用户运行的。你需要确保:/tmp/unit-go有nobody用户的执行权限,可以用chmod +x /tmp/unit-go给全局加执行权限试试;/tmp目录的权限允许nobody访问,默认/tmp是777权限没问题,但如果改过的话要确认。
确认Unit编译时启用了Go支持
你是自己编译的Unit源码,记得编译前的configure命令必须加上--go参数来启用Go语言模块,否则Unit没法正确加载Go应用。可以重新走一遍编译流程:./configure --go make make install确保Go相关的插件被正确编译安装。
核对配置文件中的路径细节
再仔细检查一遍你的配置JSON:executable字段的/tmp/unit-go是否真的存在?用ls -l /tmp/unit-go确认;working_directory设的/tmp是否存在,且nobody用户有读写权限?
如果这些步骤都排查完还是没解决,把Unit日志里的错误片段贴出来,大家能更精准地帮你定位问题。
内容的提问来源于stack exchange,提问作者litanhua
相关产品推荐
相关产品推荐

