Percona5.6.15线程池压力测试

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

压力测试参数:

ysbench  --test=oltp  --mysql-table-engine=innodb --oltp-table-size=1000000 --max-requests=10000 --num-threads=10

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

结果如图:

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

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

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

附Percona官方测试:

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

附MySQL官方测试:

MySQL线程池

(仅适用于商业版)

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

60倍提高扩展性:读/写

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

18倍提高扩展性:只读

与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

本文出自 “贺春旸的技术专栏” 博客,请务必保留此出处http://hcymysql.blog.51cto.com/5223301/1356326

原文发布于微信公众号 - java达人(drjava)

原文发表时间:2016-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java3y

从零开始写项目【总结】

从零开发项目概述 最近这一直在复习数据结构和算法,也就是前面发出去的排序算法八大基础排序总结,Java实现单向链表,栈和队列就是这么简单,十道简单算法题等等… ...

45310
来自专栏Java帮帮-微信公众号-技术文章全总结

Java等IT开发视频资源分享(不断更新)

前言: 该日志一直更新,资源都是免费分享获取精品资源需要分享好友加【Java帮帮】微信公众号,好资源大家共享,赶快分享到你的QQ空间让更多朋友都能获取免费的资源...

1.8K8
来自专栏美团技术团队

服务容错模式

背景 随着美团点评服务框架和服务治理体系的逐步成熟,服务化已成为公司内部系统设计的趋势。本着大系统小做、职责单一的原则,我们度假技术团队对业务系统进行了不少服务...

4394
来自专栏华仔的技术笔记

iOS应用架构谈 本地持久化方案及动态部署

嗯,你们要的大招。跟着这篇文章一起也发布了CTPersistance和CTJSBridge这两个库,希望大家在实际使用的时候如果遇到问题,就给我提issue或者...

4107
来自专栏北京马哥教育

一网打尽当下NoSQL类型、适用场景及使用公司

对比传统关系型数据库,NoSQL有着更为复杂的分类——键值、面向文档、列存储以及图数据库。这里就带你一览NoSQL各种类型的适用场景及一些知名公司的方案选择。 ...

3615
来自专栏跟着阿笨一起玩NET

关于Repository模式

本文转载:http://www.cnblogs.com/dudu/archive/2011/05/25/repository_pattern.html

1811
来自专栏PingCAP的专栏

性能测试工具的 Coordinated Omission 问题

很早之前就看过 Gil 大神的一篇文章《Your Load Generator Is Probably Lying To You - Take The Red ...

2875
来自专栏Flutter入门到实战

深入理解什么是RESTful API ?

越来越多的人开始意识到,网站即软件,而且是一种新型的软件。   这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(hi...

1.9K2
来自专栏携程技术中心

干货 | 分布式架构系统生成全局唯一序列号的一个思路

作者简介 丁宜人,10年java开发经验。携程技术中心基础业务研发部用户中心资深java工程师,负责携程账号的基础服务和相关框架组件研发。之前在惠普公司供职6年...

56710
来自专栏北京马哥教育

【译】5个对Linux新手来说最好的包管理器

译者按:作为Linux新手来说,选择一个Linux发行版、熟悉Linux系统,无论做什么都离不开软件的安装与卸载。那么,软件包管理器的相关知识就显得非常重要了。...

4104

扫码关注云+社区

领取腾讯云代金券