前段时间搞优化,最后瓶颈发现都在数据库单点上。 问DBA,给我的写入答案是在1W(机械硬盘)左右。
联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘)
但这东西感觉从来没证实过,故一时兴起,弄台虚拟机压测起来。
想搞清下面的问题:
1,mysql支撑多少连接数?
2,写入瓶颈到底是多少?
3,求QPS
畅想:
足够的CPU, load>远小于核数*2
足够的内存, 基本只用到物理内存
瓶颈在硬盘,写入速度应该能到90-100M/S(机械硬盘,7200转)。 故:预计kB_wrtn/s在90M左右
准备阶段:
硬件:
压测机I5双核,8G内存, 开一个虚拟机+mysql,一个eclipse,一个jmeter
MYSQL准备
mysql基本命令
停止:
root@ubuntu:/home/hejinbin# /etc/init.d/mysql stop
Stopping mysql (via systemctl): mysql.service.
启动:
root@ubuntu:/home/hejinbin# /etc/init.d/mysql start
Starting mysql (via systemctl): mysql.service.
重启:
/etc/init.d/mysql restart 重启mysql
查看当前mysq端口的连接数
netstat -apn|grep "3306"
查看mysql基本状态
show processlist; 查看当前连接
show status; 查看当前数据库状态
show variables like 'max_connections' mysql当前最大连接数
set global max_connections=1000; 设置当前最大连接数为1000
这个设置会马上生效,但是当mysql重启时这个设置会失效,需要长期生效在my.ini 添加 max_connections=1000
jmeter准备:
1,测试空压测, 测试压测客户端能承受的线程数,
只开聚合报告,其它图形和结果树输出关闭。
经过测试,打开监视器图形结果和结果树输出,本机空压测也只能到1500附近,所以特别注意关闭这两个,只开聚合报告,我的机器100个线程空压测可以到压测到6W吞吐量(throughput/sec)
后面也用100个线程进行mysql的插入压测
JAVA测试类准备
用C3P0进行压测:
C3P0:
1, 在classpath下放入 c3p0-config.xml 配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ro