涉及到的参数:

  

max_connections

  

1024

max_user_connections

1000

wait_timeout

100

         连接数是直接反应数据库性能好坏的关键指标。可能的原因包括:

         1sql查询堵死,造成后面的DML操作等待;

         2)增删改查操作频繁,磁盘IO遇到瓶颈,导致无法处理繁忙请求等。

         如果出现too manyconnections,直接增大max_connections值得同时,一般设置为500-1000,在大多数情况下就可以了,但是如果继续增加,比如增加为10000,就是治标不治本。因为连接数增大,会导致每个连接所占用的内存也增加,这样机器很容易因内存不足而死机。

mysql>show variables like '%connections%';

+----------------------+-------+

|Variable_name        | Value |

+----------------------+-------+

|max_connections      | 151   |

|max_user_connections | 0     |

+----------------------+-------+

2 rows inset (0.00 sec)

         在处理完一条请求后,会根据wait_timeout(服务器关闭非交互连接之前等待活动的秒数)的值来释放连接,一般设置为100s即可。如果没有设置,采用默认的28800s,即8h,客户端连接到mysql服务器处理完相应的操作后,要等待8h才会释放内存,如果数据库服务器有大量的闲置连接,不仅会白白消耗内存,如果连接一直累加而不断开,最终会达到mysql连接的上限数,就会报这个错误。

mysql>show variables like 'wait_timeout%';

+---------------+-------+

|Variable_name | Value |

+---------------+-------+

|wait_timeout  | 28800 |

+---------------+-------+

1 row inset (0.00 sec)

在配置文件中:

wait_timeout=100