新年,运行稳定达半年的一个 golang 进程挂掉了。
报错日志显示:
panic: Get "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xxx": net/http: TLS handshake timeout
估计是春节期间微信服务器的压力太大吧。
没有太在意,手动重启了服务。
但是,半天后,又收到短信报警,服务还是挂了,还是同样的超时错误。
无法忍受了,决定配置上 systemd 自动重启挂掉进程。
配置示例
[Unit]
Description=Golang Tools
[Service]
User=xxx
Group=xxx
Type=simple
Restart=always
RestartSec=20
StartLimitInterval=0
Nice=10
WorkingDirectory=/home/xxx/go/
ExecStart=/usr/bin/nohup /home/xxx/go/go_tool
StandardOutput=null
TimeoutStartSec=30
[Install]
RequiredBy=multi-user.target
关键参数:
Restart=always 进程挂了就重启
RestartSec=20 20秒检查一次
StartLimitInterval=0 无限次重启,忽略失败次数
配置生效
sudo systemctl daemon-reload
sudo systemctl start go_tools
然后我手动 kill 掉进程,20秒内就能看到进程被自动启动了。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式