背景:php发布新代码后,发现时不时的会出现白页,用wireshark抓包分析后,提示:msyql request quit
新代码中新加了个逻辑,就是创建连接时,多写了一个,导致这个问题产生。一开始以为是数据库连接池满了,但是DBA说msyql request quit这个是客户端主动断开连接的,mysql连接数根本没满。
怀着疑惑的心情进行了如下探测之旅。
1、将虚拟机的mysql起起来,设定为15.
set GLOBAL max_connections=200
2、检测步骤为:
show variables like 'max_connections';
3、利用java的jdbc+多线程直接连接数据库,得出结果为:too many connections,这里来看,mysql jdbc connector做的还是不错的。
3.1
3.2 如下:
ExecutorService executorService = Executors.newCachedThreadPool(); for (int i = 0; i < 5; i++){ executorService.execute(new MyClient()); } executorService.shutdown();
3.3
4、:
tcpdump -i eth0 -w dump.pcap2 -A
5、用wireshark打开上面产生的dump文件 ,然后找到tcp流,注意:这里可以用过滤器找出只要mysql的
5.1 wireshark下载,见
6、
这个错误是因为没有连接上数据库。
7、:
for($i=0;$i<15;$i++){}
注意引用变量前面要加$
8、php echo如何换行,
9、注意:mysql控制台输出的show processlist和在linux下用netstat -an |grep 3306效果是一样的。