我的Go gRPC Server停止了,而我没有自己停止它。 现在,每当我看到服务器每隔30或60分钟没有响应时,我就需要通过输入命令“ go run server.go”来重新启动服务器。
这正常吗?在特定时间后是否需要重新启动服务器?
答案 0 :(得分:1)
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 :(得分:0)
我最近正在研究golang,发现go lang错误处理有所不同。如果您愿意,它不会强迫您使用err,更糟糕的是它不会显示任何内容。 因此,请检查您的程序是否存在任何错误。同时,为了获得专家的帮助,您需要更清楚地了解问题。显示一些代码或指示,使人们无法观察问题出在哪里。只是说我的程序崩溃了对您有任何帮助。
答案 2 :(得分:0)
尝试这些选项 1.在退出之前检查日志,了解发生了什么(将日志转储到文件中以验证问题) 2.您是否在代码库中添加了引起此问题的外部软件包?