You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:14:10