php网站报方法不存在
检查发现apache和mysql都是运行状态,重启后恢复,
通过出现问题时用navicat访问mysql数据库发现提示too many connections
这是mysql连接数过多导致的
打开msyql的配置文件my.ini找到max_connections参数
将他的值改为1000,保存后重启mysql即可
如问题依旧,则需要进入mysql然后运行
show global variables like 'wait_timeout';
(查看mysql的非交互连接的等待时间是多少,
这个数值指的是mysql在关闭一个非交互的连接之前要等待的秒数,默认是28800s)
然后运行
set global wait_timeout=5;
(修改这个数值,这里可以随意,最好控制在几分钟内 )
set global interactive_timeout=50;
(修改这个数值,表示mysql在关闭一个连接之前要等待的秒数,至此可以让mysql自动关闭那些没用的连接,但要注意的是,正在使用的连接到了时间也会被关闭,因此这个时间值要合适)
就可以了,当sleep状态的连接数达到1000后不再增加,维持在1000个
切记重启服务器!重启服务器!重启服务器!
注意:
show processlist;
这个mysql命令可以查看连接数,可以发现有很多连接处于sleep状态,这些其实是暂时没有用的,所以可以kill掉,例如
kill 1180421;
运行show processlist; 可以得到所以连接到这个服务器上的MySQL连接:
mysql> show
processlist;
+---------+------+---------------------+---------+---------+------+-------+-------------------+
|
Id | User | Host | db | Command | Time | State | Info
|
+---------+------+---------------------+---------+---------+------+-------+-------------------+
|
1180421 | ur | 202.103.96.68:49754 | test1 | Sleep | 1 | | NULL
|
| 1180427 | ur | 202.103.96.68:55079 | test2 | Sleep |
1 | | NULL |
| 1180429 | ur | 202.103.96.68:55187 |
testdba | Sleep | 0 | | NULL |
| 1180431 | ur |
202.103.96.68:55704 | testdba | Sleep | 0 | | NULL
|
| 1180437 | ur | 202.103.96.68:32825 | test1 | Sleep | 1 |
| NULL |
| 1180469 | ur | 202.103.96.68:58073 | testdba |
Sleep | 0 | | NULL |
| 1180472 | ur |
83.136.93.131:47613 | test2 | Sleep | 8 | | NULL
|
| 1180475 | root | localhost | NULL | Query | 0 | NULL
| show PROCESSLIST
|
+---------+------+---------------------+---------+---------+------+-------+-------------------+
8
rows in set (0.00 sec)
mysql>
然后,你可以看到像上面这样的MySQL数据连接列表,而且每一个都会有一个进程ID号(在上表的第一列)。我们只要输入这样的命令:
mysql> kill 1180421;
Query OK, 0 rows
affected (0.00 sec)
mysql>
其中1180421为你在进程列表里找到并且要杀掉的进程号。
|