Published on

nging出现499

Authors
  • avatar
    Name
    Ushen
    Twitter

前两天线上服务器出现了大部分接口请求报错的问题

查nginx日志发现出现了大量的worker_connections are not enough

看到今天请求量确实是比往常高,以为是worker开的不够,把配置里面的worker_connections加多了

但是情况并没有改善, 于是进一步查到uwsgi, 发现uwsgi有大量的listen queue full

感觉这很奇怪, 为了尽快解决, 我加多了uwsgi的listen配置, 事情有好转, 但是没有多大作用, 每隔一段时间就又会出现listen queue full

怀疑是哪里导致的http连接一直没释放,占用资源,

最后找到问题的是gin服务上的一个接口, 这个服务出现了某些异常, 使用的内存量一直不断上升, 这是以往都不会出现的情况,

原因在这里

c.AbortWithStatus(http.StatusInternalServerError)

接口捕捉到异常之后, 会调用这个函数然后返回, 这里是返回500状态错误码, 按道理客户端在收到500错误请求就会关闭了, 还不清楚为什么会这样

这里改成返回200状态码,和错误信息给请求方, 一切就正常了

目前还不知道什么情况, 后续有时间再细看一下