MySQL数据库压测有哪些注意事项和FAQ


下面讲讲关于MySQL数据库压测有哪些注意事项和FAQ,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL数据库压测有哪些注意事项和FAQ这篇文章你一定会有所受益。1.注意事项(1).提前规划好具体要测试什么,即测试目的,比如MySQL5.6与5.7的性能差异;异步复制和半同步复制的TPS;设置双1(innodb_flush_log_at_trx_commit=1、sync_binlog=1)性能对数据库性能影响多少;确认即将上线的新业务对MySQL负载影响多少,是否能承载得住,是否需要对云服务器进行扩容或升级配置;(2).压力测试比较耗时,我们不可能时刻监督每次压测什么时候结束,然后手动的进行下一次测试,所以要写个脚本帮助我们一键测试;(3).根据测试环境的硬件配置给予机器适当的压力,对于有限的硬件配置,不能无限的增压,这样数据库里全是lock wait timeout等报错,最后会使MySQL Crash的。2.FAQ这一块主要讲测试的时候系统和数据库出现的问题,导致压测无法进行(1)tpcc数据库在预热rampup时候的报错解决方法:错误很明显,参数max_prepared_stmt_count(默认16382)现在的大小已经无法满足负载需求了,这个参数是限制数据库中已经准备的statements数量,即sql数量,我们把它增大十倍。sht-sgmhadoopdn-02.telenav.cn:mysqladmin:/usr/local/mysql/data:>vim /ect/my.cnfmax_prepared_stmt_count = 163820然后重启MySQLmysql> show variables like ‘%max_prepared_stmt_count%’;+————————-+——-+| Variable_name | Value |+————————-+——-+| max_prepared_stmt_count = | 163820 |+————————-+——-+参数官方解析:This variable limits the total number of prepared statements in the server. It can be used in environments where there is the potential for denial-of-service attacks based on running the server out of memory by preparing huge numbers of statements. If the value is set lower than the current number of prepared statements, existing statements are not af开发云主机域名fected and can be used, but no new statements can be prepared until the current number drops below the limit. The default value is 16,382. The permissible range of values is from 0 to 1 million. Setting the value to 0 disables prepared statements.(2)MySQL负载过高,导致crash数据库日志也出现大量的日志信息:解决方法:建议:不要给与数据库太大的压力,控制好thread并发数(3)linux某一用户达到max user processes后,导致暂时无法使用该用户mysqladmin登录和无法使用任何bash命令-bash-4.2$ sudo su mysqladminsu: failed to execute /bin/bash: Resource temporarily unavailablesht-sgmhadoopcm-01:mysqladmin:/usr/local/mysql/tpcc-mysql-master/logs:>lsbash: fork: retry: No child processesbash: fork: retry: No child processesbash: fork: retry: No child processesbash: fork: retry: No child processesbash: fork: Resource temporarily unavailable解决方法:查看系统的一些限制设置,发现max user processes 只有4096,进程被用完,所以无论写入什么命令,系统都无法及时作出响应[root@sht-sgmhadoopcm-01 ~]# ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 31207max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 65536pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 4096virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited[root@sht-sgmhadoopcm-01 ~]# vim /etc/security/limits.conf* soft nproc 65536* hard nproc 65536* soft nofile 65536* hard nofile 65536还需要修改一个默认的配置文件才能真正的生效:[root@sht-sgmhadoopcm-01 ~]# vim /etc/security/limits.d/20-nproc.conf# Default limit for number of user’s processes to prevent# accidental fork bombs.# See rhbz #432903 for reasoning.* soft nproc 65536#把这里的4096改大为65536或者为unlimitedroot soft nproc unlimited查看已经生效:sht-sgmhadoopcm-01:mysqladmin:/usr/local/mysql/tpcc-mysql-master/logs:>ulimit -u65536(4)并发太大,导致大量的lock当线程数达到1536及以上的时候,日志中出现大量的lock信息:解决方法:此时查看MySQL中的一些Lock状态信息,可以看出来全部都是一些x锁,说明现在并发过大,导致数据库处理不过来,产生大量排它锁。建议:不要给与数据库太大的压力,控制好thread并发数(5)由于磁盘空间不足,导致OS和MySQL相关报错在启动MySQL的时候err日志报的错误:TPCC压测时候的日志报错sht-sgmhadoopcm-01:mysqladmin:/usr/local/mysql/tpcc-mysql-master/logs:>less tpcc_runlog_parameter_20180625075957_1024_THREADSdelivery 241:51114, HY000, The table ‘order_line’ is fulldelivery 823:51114, HY000, The table ‘order_line’ is fulldelivery 618:5…………使用vim打开一个文件的时候报错E297: Write error in swap file“hostname.err” [noeol] 3437L, 417792CPress ENTER or type command to continu解决方法:sht-sgmhadoopdn-01.telenav.cn:mysqladmin:/usr/local/mysql/data:>df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/mapper/centos-root xfs 77G 77G 12M 100% /devtmpfs devtmpfs 2.9G 0 2.9G 0% /devtmpfs tmpfs 2.9G 0 2.9G 0% /dev/shmtmpfs tmpfs 2.9G 65M 2.8G 3% /runtmpfs tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup/dev/sda1 xfs 497M 132M 366M 27% /boot建议:删除无用的文件释放disk space,或者mount一个更大的磁盘对于以上MySQL数据库压测有哪些注意事项和FAQ相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的行业资讯板块。

相关推荐: 解决MySql无法连接本地地址localhost的方法

这篇文章将为大家详细讲解有关解决MySql无法连接本地地址localhost的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql连不上l开发云主机域名ocalhost的解决办法:1、检查IP地址是否能ping通;2…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/07 18:59
下一篇 06/07 18:59

相关推荐