一、安装mysql5.7
安装位置为/usr/local/mysql
二、安装sysbench1.0
1、下载 sysbench1.0.17
wget https://codeload.github.com/akopytov/sysbench/tar.gz/1.0.17
2、解压缩sysbench
3、安装sysbench 所需依赖包
yum -y install make automake libtool pkgconfig libaio-devel vim-common
yum -y install mysql-devel
4、建立软连接
ls -l /usr/local/mysql/lib/libmysqlclient.so.18*
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/
5、vi /etc/ld.so.conf
export LD_LIBRARY_PATH=/usr/local/mysql/lib
6、ldconfig
7、cd /soft/sysbench-1.0
1>./autogen.sh
2>./configure --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib
3> make
4>make install
8、验证是否安装成功:sysbench --version
三、压测MySQL数据库
1、先在数据库创建test库
2、prepare 数据
sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua
--mysql-host=127.0.0.1
--mysql-port=3306
--mysql-user=root
--mysql-password=root
--mysql-db=test
--db-driver=mysql
--oltp-test-mode=complex //执行模式
--oltp-tables-count=32 //生成表的数量
--oltp-table-size=10000000 //每张表的数据条数
--threads=64 //客户端的并发线程数 64,128,256
--time=120 //执行时间为120秒
--report-interval=10 //每10秒生成一次报告
prepare
3、run
sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua
--mysql-host=127.0.0.1
--mysql-port=3306
--mysql-user=root
--mysql-password=root
--mysql-db=test
--db-driver=mysql
--oltp-test-mode=complex //执行模式
--oltp-tables-count=32 //生成表的数量
--oltp-table-size=10000000 //每张表的数据条数
--threads=64 //客户端的并发线程数
--time=120 //执行时间为120秒
--report-interval=10 //每10秒生成一次报告
run >> /soft/sysbench_threads64.log //将日志输出到文件
4、clean up
sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua
--mysql-host=127.0.0.1
--mysql-port=3306
--mysql-user=root
--mysql-password=root
--mysql-db=test
--db-driver=mysql
--oltp-tables-count=10
cleanup
报错:
FATAL: error 2001: Can't create UNIX socket (24)
FATAL: unable to connect to MySQL server, aborting...
FATAL: error 2001: Can't create UNIX socket (24)
FATAL: failed to connect to database server!
FATAL: thread#1021: failed to connect to database server, aborting...
[root@server170 ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 32767
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@server170 ~]# ulimit -n 10240
[root@server170 ~]# ulimit -a
core file size (blocks, -c) 0
(1) 解决思路:
而Linux内核也会对 mysql 打开的进程数进行限制,并且优先级要高。
通过 ulimit -a 查看 mysql 这个用户的最大打开文件个数,发现其值为 1024(linux 默认都是1024)。
open files (-n) 1024
通过修改 /etc/security/limits.conf 配置文件,添加如下行:
* - nofile 4096,把该限制放大