我的mysql服务器用了一段时间之后就连不上了,报这样的错误。重启mysql后。我使用show processlist;现实的线程状态基本都是Sleep,而且数量一直在增大,不知道是不是因为这些没有释放掉的线程导致资源占尽。
请大神解说一下这些线程的运作机制。
还有本bug的解决方法。

解决方案 »

  1.   

    连接满了  
    可以set global max_connections=1000;试试
      

  2.   

    您好,我的最大连接数是1024,我想知道那些sleep的线程过多是不是就只能等到这些线程释放了才能连接呢,应该怎么解决
      

  3.   


    程序拿到问题之后没有释放吧....或者你们的环境是用的java的线程池...线程状态为sleep 其实查询已经结束..但是程序没有释放...
      

  4.   

    那么你的意思是说mysql服务器中处理请求的线程虽然程序中已经结束访问了,但是mysql服务器没有结束该线程,而是继续等待超时才去释放?
      

  5.   

    你可以考虑设置interactive_timeout和wait_timeout来让MySQL自动关闭非活动连接。http://hatemysql.com/2012/07/29/interactive_timeout%E5%92%8Cwait_timeout%E5%8F%82%E6%95%B0%E5%8C%BA%E5%88%AB%E5%92%8C%E8%AE%BE%E7%BD%AE%E7%AD%96%E7%95%A5/