首页 > go server 不稳定

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()
}

我想我大概知道问题在哪里了,应该是处理Message这个缓存为1000的chan的for select处理函数出现了一些问题,导致models.Messages <- content堵塞,且返回response在此语句之下,所以能接受消息但是不能返回。同时我在models.RecordPcLastTime中也有像models.Messages发送讯息,所以导致我整个接受message的逻辑全部堵塞。早上想了好久都没有想到,然后回来看有人回答没,突然一下子就想到了,看来灵感很重要啊^_^.知道原因了应该问题就好解决了

【热门文章】
【热门文章】