使用Sysbench测试MySQL时,服务端和客户端连接不对等的解决方法
问题现象描述
使用Sysbench测试MySQL,当压测的num-threads大于500时,可能会出现服务端和客户端的连接状态不对等的情况,服务端会有许多TIME_WAIT状态的进程。
关键过程、根本原因分析
持续的高并发场景导致资源耗尽。
结论、解决方案及效果
- 修改MySQL配置中的最大连接数限制。修改配置文件“/etc/my.cnf”,在文件中的[mysqld]字段下增加如下信息:
max_connections=2000
- 调整网络相关参数。
- 执行如下命令,修改所能接受SYN同步包的最大客户端数量。
echo 8192 >/proc/sys/net/ipv4/tcp_max_syn_backlog
- 执行如下命令,修改服务端所能处理数据的最大客户端数量。
echo 1024 >/proc/sys/net/core/somaxconn
- 执行如下命令,修改所能接受SYN同步包的最大客户端数量。
- 修改限制资源使用的配置文件“/etc/security/limits.conf”,配置用户可打开的最大文件数和最大进程数,将以下参数的值分别修改为65535。
* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535
- 修改“/etc/security/limits.d/90-nproc.conf”文件,配置进程最大限制参数,将nproc参数的值设置为65535。
* soft nproc 65535
- 重新执行Sysbench测试命令。
./src/sysbench --num-threads=500 --test=./tests/include/oltp_legacy/update_non_index.lua --oltp-table-size=2180000 --oltp-tables-count=10 --percentile=99 --report-interval=1 --mysql-host=172.253.33.194 --mysql-user=szjr --mysql-password=szjr --mysql-port=3306 --mysql-db=summertest --max-time=300 --max-requests=0 run
父主题: MySQL