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

Go程序time.Ticker运行6个月后突然停止发送tick求助

Go守护进程Ticker冻结排查求助

我搜索许久未找到相关记录,这个罕见问题并非首次出现。我编写了一个Go守护进程(使用go1.20.4 linux/amd64编译),通过time.NewTicker每日从外部API同步数据,核心代码如下:

ticker := time.NewTicker(config.CollectionPollInterval)
defer ticker.Stop()
for {
    select {
    case <-ctx.Done():
        return nil
    case <-ticker.C:
        if err := syncAllCollections(); err != nil {
            return err
        }
    }
}

其中config.CollectionPollInterval为24小时。该程序以systemd服务运行,正常运行6个月后,日志显示最后一次同步发生在11月2日,之后进程完全冻结。我通过调试器发现进程卡在select语句,查看ticker变量时,其when字段值异常,曾考虑过int64溢出但不合理。目前无法复现该问题,进程仍挂着调试器,寻求排查建议。

补充信息

  • 二进制编译版本:go1.20.4
  • go.mod内容:
module my_package

go 1.13

require (
    github.com/jackc/pgtype v1.3.0
    github.com/jackc/pgx/v4 v4.6.0
)
  • systemd服务状态:
$ systemctl status my-go-process.service 
● my-go-process.service - daemon
     Loaded: loaded (/lib/systemd/system/my-go-process.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-05-16 09:56:56 UTC; 6 months 8 days ago
   Main PID: 377922 (my-go-process)
      Tasks: 14 (limit: 38269)
     Memory: 5.0M
     CGroup: /system.slice/my-go-process.service
             └─377922 /usr/local/bin/my-go-process -config-file /home/config.json

Nov 02 09:57:21 tot my-go-process[377922]: 2023/11/02 09:57:21 main.go:89: ***********
Nov 02 09:57:21 tot my-go-process[377922]: 2023/11/02 09:57:21 main.go:96: ***********
Nov 02 09:57:21 tot my-go-process[377922]: 2023/11/02 09:57:21 main.go:89: ***********
Nov 02 09:57:22 tot my-go-process[377922]: 2023/11/02 09:57:22 main.go:96: ***********
Nov 02 09:57:22 tot my-go-process[377922]: 2023/11/02 09:57:22 main.go:89: ***********
Nov 02 09:57:22 tot my-go-process[377922]: 2023/11/02 09:57:22 main.go:96: ***********
Nov 02 09:57:22 tot my-go-process[377922]: 2023/11/02 09:57:22 main.go:89: ***********
Nov 02 09:57:23 tot my-go-process[377922]: 2023/11/02 09:57:23 main.go:96: ***********
Nov 02 09:57:23 tot my-go-process[377922]: 2023/11/02 09:57:23 main.go:89: ***********
Nov 02 09:57:23 tot my-go-process[377922]: 2023/11/02 09:57:23 main.go:96: ***********
  • systemd Unit文件:
[Unit]
Description=daemon
After=network.target postgresql@11-main.service

[Service]
Type=simple
User=user
ExecStart=/usr/local/bin/my-go-process -config-file ${HOME}/config.json

[Install]
WantedBy=multi-user.target

内容的提问来源于stack exchange,提问作者geniass

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:44:56