今天论坛打开了这个会话功能,结果很荣幸踩坑里了,连接数直接给干到2000开外。
好了,直接上图说下:
show processlist,满屏显示这条SQL,情急之下,立即pt-kill,先让论坛活下来。顺便想问候下discuz开发,你们真的做了测试了吗,就直接发布了?
表结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
mysql> desc pre_common_session;
+--------------+----------------------+------+-----+---------+-------+
| Field | Type |
Null
| Key | Default | Extra |
+--------------+----------------------+------+-----+---------+-------+
| sid | char(
6
) | NO | PRI | | |
| ip1 | tinyint(
3
) unsigned | NO | |
0
| |
| ip2 | tinyint(
3
) unsigned | NO | |
0
| |
| ip3 | tinyint(
3
) unsigned | NO | |
0
| |
| ip4 | tinyint(
3
) unsigned | NO | |
0
| |
| uid |
int
(
11
) unsigned | NO | MUL |
0
| |
| username | char(
50
) | NO | | | |
| groupid | smallint(
6
) unsigned | NO | |
0
| |
| invisible | tinyint(
1
) | NO | |
0
| |
| action | tinyint(
1
) unsigned | NO | |
0
| |
| lastactivity |
int
(
10
) unsigned | NO | |
0
| |
| lastolupdate |
int
(
10
) unsigned | NO | |
0
| |
| fid |
int
(
11
) unsigned | NO | |
0
| |
| tid |
int
(
11
) unsigned | NO | |
0
| |
+--------------+----------------------+------+-----+---------+-------+
14
rows
in
set
(
0.00
sec)
|
由于该SQL导致全表扫描,虽然表数据不多1万多行,但InnoDB引擎在没有使用到索引的情况下,会转为表级锁,并发一大,线程处理不完,连接不释放,连接数就会上升。
最终让开发在后台关闭该功能,解决之。
本文转自hcymysql51CTO博客,原文链接: http://blog.51cto.com/hcymysql/1381352,如需转载请自行联系原作者