go server 不稳定
用go写了一个监控服务,大概一秒接受一次心跳请求。但是当服务器运行一段时间之后,可能会出现能接受到请求但是不会为请求返回response或者直接死掉并没有任何错误信息,cpu与memory使用情况也正常。
请问有大神遇到过这种情况没有?或者有没有知道这类问题的解决思路?希望知道的大大能给予提示下,都快被这个搞得不知所措了
我使用了beego,收到信息后我就直接
this.Data["json"] = "ok"
this.ServeJSON()
而且我接收到信息后的其他操作也没有进行,就只有一句打印信息的语句一直打印收到的信息还在执行,我的整个函数是这样的:
func (this *MainController) Post() {
defer this.Ctx.Request.Body.Close()
body, err := ioutil.ReadAll(this.Ctx.Request.Body)
go models.RecordPcLastTime(body)
content := string(body)
fmt.Println(content)
if err == nil && content != "" {
models.Messages <- content
this.Data["json"] = "ok"
} else {
this.Data["json"] = "fail"
}
fmt.Println("beego server")
this.ServeJSON()
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我想我大概知道问题在哪里了,应该是处理Message这个缓存为1000的chan的for select处理函数出现了一些问题,导致models.Messages <- content堵塞,且返回response在此语句之下,所以能接受消息但是不能返回。同时我在models.RecordPcLastTime中也有像models.Messages发送讯息,所以导致我整个接受message的逻辑全部堵塞。早上想了好久都没有想到,然后回来看有人回答没,突然一下子就想到了,看来灵感很重要啊^_^.知道原因了应该问题就好解决了