我的 Go gRPC 服务器没有我自己停止就停止了。现在,每当我看到它每 30 或 60 分钟没有响应时,我都需要通过输入命令“go run server.go”来重新启动服务器。
这是正常的吗?我需要在特定时间后重新启动服务器吗?
import "runtime/debug"
defer func() {
if err := recover(); err != nil {
log.Errorf("Recovered from err: %v\n %s", err, debug.Stack())
}
}()
import (
panichandler "github.com/kazegusuri/grpc-panic-handler"
)
func main() {
uIntOpt := grpc.UnaryInterceptor(panichandler.UnaryPanicHandler)
sIntOpt := grpc.StreamInterceptor(panichandler.StreamPanicHandler)
grpc.NewServer(uIntOpt, sIntOpt)
}
当恢复处理程序方法添加速度更快时,第二种方法更可靠
尝试这些选项 1. 检查您的日志,了解它退出之前发生的情况(将日志转储到文件以验证问题) 2. 您是否将任何外部包添加到导致此问题的代码库?
我最近在学习 golang,我发现 go lang 错误处理不同。如果你想要它不会强迫你使用 err,糟糕的是它不会向你显示任何东西。所以请检查您的程序是否有任何错误。并且对于专家的帮助,您需要更清楚地了解问题。显示一些代码或指示,人们无法观察到问题出在哪里。只是说我的程序崩溃了会对你有所帮助。