CPU百分百-不懂就问系列
- Langage dominant
- Go
- Étoiles
- 7.8k
- Forks
- 1.3k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
不懂就问:
不太了解如何调用,于是干脆把代码整个复制,我们是通过NGINX转发到 ZINX -TCP-SERVER上面的,也设了超时时间,每天交易笔数上万笔,
有的时候会CPU暴增,由于pprof没玩明白,只能靠现象盲猜,再某一时刻 突然会阻塞,CPU暴增300%,单独重启TCP服务无效,只能重启NGINX,再重启 TCP SERVER才能好使,看了下整个链路,盲猜可能是handler阻塞导致的 伪代码如下
```
func (c *Connection) CloseConn() {
c.Lock()
defer c.Unlock()
if c.isClosed == true {
return
}
// 关闭socket链接
_ = c.Conn.Close()
//将链接从连接管理器中删除
c.TCPServer.GetConnMgr().Remove(c)
c.isClosed = true
}
```
```
func (this *InitHandlerRouter) Handle(request ziface.IRequest) {
//调用了自己的一套协议解决年报组包分包的东西
defer func() {
if err := recover(); err != nil {
request.GetConnection().CloseConn()
//此处不知道有没有用反正我return了
return
}
}()
//请求另外一个TCP 服务 。。。。这个地方可能会超时 60秒
//返回报文信息,关闭连接
request.GetConnection().CloseConn()
}
```
那么问题来了,CPU暴增的原因,是否是和这个超时有关系,从表现上来看一出现超时,就会出现CPU暴增的情况
有没有好的解决办法,或者优化方案,客户端并非一直长连服务器,发送报文,接受报文连接就关闭了
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Évaluation
Cette issue n'a pas encore été évaluée.