Percona5.6.15线程池压力测试

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

http://www.mysqlperformanceblog.com/2013/03/16/simcity-outages-traffic-control-and-thread-pool-for-mysql/

这篇文章生动的描述了线程池的妙处,它可以解决高并发数据库性能下降。

试想着如果不设置交通信号灯,没有交警的指挥,让其车辆肆意行驶,那么造成的后果就是交通瘫痪,谁都抢行,结果谁都过不去,堵死了。那么就必须采取一定的措施,先放行一部分车辆,后续的就排队等待,直到交通畅通。——这就是线程池的作用。


每个客户端连接MySQL执行SQL语句会创建一个线程。一旦连接数量的增加超过某特定点性能将会下降。该特性使服务器保持最佳性能,即使大量的客户端连接,通过使用线程池服务器线程的数量将减少,这将减少CPU上下文切换和热锁的竞争。


下面我用虚拟机做了一次压力测试。

虚拟机配置:

root@percona1:~/percona-toolkit-2.2.4# pt-summary 
# Percona Toolkit System Summary Report ######################
       Date | 2014-02-04 01:51:35 UTC (local TZ: CST +0800)
   Hostname | percona1
     Uptime |  1:48,  3 users,  load average: 0.62, 9.56, 17.38
     System | VMware, Inc.; VMware Virtual Platform; vNone (Other)
Service Tag | VMware-56 4d 4e ce 5e 61 55 0d-cb 94 85 3f 9e 9a 3e 79
   Platform | Linux
    Release | Debian GNU/Linux 7.3 (wheezy) (wheezy)
     Kernel | 3.2.0-4-amd64
Architecture | CPU = 64-bit, OS = 64-bit
  Threading | NPTL 2.13
    SELinux | No SELinux detected
Virtualized | VMWare
# Processor ##################################################
 Processors | physical = 2, cores = 4, virtual = 4, hyperthreading = no
     Speeds | 4x1895.729
     Models | 4xIntel(R) Core(TM) i3-3227U CPU @ 1.90GHz
     Caches | 4x3072 KB
# Memory #####################################################
      Total | 996.0M
       Free | 69.8M
       Used | physical = 926.2M, swap allocated = 1.3G, swap used = 439.8M, virtual = 1.3G
    Buffers | 2.4M
     Caches | 20.0M
      Dirty | 384 kB
    UsedRSS | 810.2M
 Swappiness | 60
DirtyPolicy | 20, 10
DirtyStatus | 0, 0


压力测试参数:

1
sysbench  -- test =oltp  --mysql-table-engine=innodb --oltp-table-size=1000000 --max-requests=10000 --num-threads=1000 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-db= test  --mysql-socket= /tmp/mysql .sock run


并发1000个连接,最大请求数为10000。


结果如图:

wKiom1Lw7iLSeWNIAAENKPBSU0I517.jpg

很明显开启了线程池TPS要好于未开启的。


注:MySQL5.5和5.6只有在企业版(付费)才支持,社区版是没有这个功能的。


参考:http://www.percona.com/doc/percona-server/5.5/performance/threadpool.html


附Percona官方测试:

wKioL1LzpqnznG4yAAG4a-mK3oQ663.jpg

http://www.mysqlperformanceblog.com/2014/02/04/16000-active-connections-percona-server-continues-work-others-die/


附MySQL官方测试:

MySQL线程池

(仅适用于商业版)

为满足不断增长的用户、查询和数据通信量对性能和扩展性的持续需求,MySQL企业版提供了MySQL线程池。线程池提供了一种具有高度扩展性的线程处理模型,旨在减少管理客户连接和语句执行线程的开销。服务不断增长的用户连接数量及大通信量的在线应用性能和扩展性持续改善效果如下图所示:

60倍提高扩展性:读/写wKiom1Lx2EOCsPSEAAFBVnRIscw183.jpg

与MySQL社区版服务器相比,带MySQL线程池的MySQL企业版可提供60倍的扩展性.

18倍提高扩展性:只读

wKiom1Lx2HSj7KypAAFOgnMvtAk532.jpg

与MySQL社区版服务器相比,带MySQL线程池的MySQL企业版可提供18倍的扩展性.

配置:

  • MySQL 5.6.11

  • Oracle Linux 6.3, Unbreakable Kernel 2.6.32

  • 4 sockets, 24 cores, 48 Threads

  • Intel(R) Xeon E7540 2GHz CPUs

  • 512GB DDR RAM


http://www.mysql.com/products/enterprise/scalability.html













本文转自hcymysql51CTO博客,原文链接: http://blog.51cto.com/hcymysql/1356326,如需转载请自行联系原作者



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
安全 前端开发 测试技术
《C++ Concurrencyin Action》第10章--多线程程序的测试和调试
《C++ Concurrencyin Action》第10章--多线程程序的测试和调试
|
5月前
|
存储 安全 Java
手撕线程池与性能测试
手撕线程池与性能测试
66 0
|
5月前
|
安全 Java
ConcurrentHashMap扩容的详细介绍以及多线程测试(基于JDK1.8)
ConcurrentHashMap扩容的详细介绍以及多线程测试(基于JDK1.8) ConcurrentHashMap是Java中线程安全的哈希表实现。它使用了锁分段技术,将哈希表分成多个Segment(默认为16),每个Segment都是一个独立的哈希表,每个Segment内部维护一个ReentrantLock锁,对于不同的Segment,它们可以被并发访问。当进行put、get等操作时,只需要获取对应Segment的锁即可,大大提高了并发访问的效率。
|
存储 关系型数据库 MySQL
linux Command sysbench 线程压力测试工具(2)
linux Command sysbench 线程压力测试工具(2)
|
Oracle Ubuntu 关系型数据库
linux Command sysbench 线程压力测试工具(1)
linux Command sysbench 线程压力测试工具(1)
|
算法 Java 测试技术
【DVCon-US-2020】基于多线程UVM测试平台的仿真加速方法
【DVCon-US-2020】基于多线程UVM测试平台的仿真加速方法
277 0
【DVCon-US-2020】基于多线程UVM测试平台的仿真加速方法
|
Web App开发 移动开发 前端开发
Selenium+Python3之:多线程进行跨浏览器测试
Selenium+Python3之:多线程进行跨浏览器测试
224 1
Selenium+Python3之:多线程进行跨浏览器测试
|
索引 Python
python 线程 ~~ ~~~为面试开辟VIP通道~~~~~测试、死锁、全局变量共享、守护主线程等。。。。。。(2)
python 线程 ~~ ~~~为面试开辟VIP通道~~~~~测试、死锁、全局变量共享、守护主线程等。。。。。。(2)
121 0
python 线程 ~~ ~~~为面试开辟VIP通道~~~~~测试、死锁、全局变量共享、守护主线程等。。。。。。(2)
|
存储 JSON 资源调度
python 线程 ~~ ~~~为面试开辟VIP通道~~~~~测试、死锁、全局变量共享、守护主线程等。。。。。。(1)
线程(英语:thread)是操作系统能够进行运算调度的最小单位。线程很重要,通过本篇文章可以让你们很好的了解线程的传参、线程执行规则、守护主线程、线程间共享全局变量、进程互斥锁、死锁进程怎么解决。希望对你们有所帮助。
204 0
python 线程 ~~ ~~~为面试开辟VIP通道~~~~~测试、死锁、全局变量共享、守护主线程等。。。。。。(1)
java94-cpu随机调用线程测试
java94-cpu随机调用线程测试
191 0
java94-cpu随机调用线程测试