美文网首页
一次问题解决的反思

一次问题解决的反思

作者: 蓝不多山 | 来源:发表于2017-12-13 06:42 被阅读0次

    有人在群里喊数据库链接数不够了,要调大,听上去不怎么靠谱,跟进了一下。

    1. A: 是xxx数据库吗?
    2. B: 是mysql数据库
    3. A: 用xxx管理连接吗?
    4. B: 不是
    5. A: 前面讨论close wait是tcp状态吗?
    6. B: 是
    7. A: tcp状态在db端看到还是应用服务器?
    8. B: 应用服务器。
    9. A: 那应该是mysql主动关闭呀
    10. A: 应用服务器看到的tcp连接是来自客户端还是到db的?
    11. B: 来自客户端
    12. A: 哦,应该是客户端主动关闭。原因可能是应用服务器超时没响应,超时原因有很多,可能是应用服务器线程被阻塞,阻塞一般都是在等待资源,资源可能是一把锁、一个数据库链接或其他。超时还可能是应用服务器处理速度变慢,处理速度慢也是资源紧张,资源可能是内存、CPU、外部IO。
    13. B: 哦,看看吧,先赌一把数据库链接不够。
    14. A: 如果是数据库链接,忘关的可能性大,或者死锁。只调大还不行,要在连接池加上自动释放,锁加上不等待。最终还是要排查真正原因,解决掉。

    在这个处理过程中,A尽量做到思维严谨,不过还有改进空间。

    1. 这个问题可以改成开放式,“什么数据库?"
    2. 同样改成开放式,”用什么管理数据库链接?“
    3. 这里思维跳了一下,前面并没说tcp 链接是到mysql的
    4. 对连接池管理不是非常熟悉,没法凭直接指引方向了。

    总结下来,要像高手一样灰飞烟灭间扫除问题,需要严谨的逻辑推理+丰富实战经验培养的直觉。

    相关文章

      网友评论

          本文标题:一次问题解决的反思

          本文链接:https://www.haomeiwen.com/subject/bbgoixtx.html