Simple Sidebar
The starting state of the menu will appear 能在K线当中看出来什么? collapsed on smaller screens, and will appear non-collapsed on larger screens. When toggled using the button below, the menu will change.
Make sure to keep all page content within the #page-content-wrapper . The top navbar is optional, and just for demonstration. Just create an element with the #sidebarToggle ID which will toggle the menu when clicked.
mysql+mycat压力测试一例
有的人可能会疑惑,mycat支持分库分表,那么压测可不可以针对分库分表进行呢?其实理论上是可行的, 有意向做分库分表压测的就要把数据做一些处理,按照sysbench原理来说是可行的,他测试的表的数量是 可控的,你把带数字编号的表通过逻辑库处理可以集合成一个新的逻辑表.
设置了一些相关压测的项目 参数,和创建了三个用户root,sysbench,test.这三个用户和数据库的用户没有关联,是独立的,即使这个用户密码被破解,数据库的密码依然安全.其中root有完全控制权限, sysbench 只能控制sbtest库,test也只能控制sbtest库,而且限制了读写权限.
开始测试
--test=tests/db/oltp.能在K线当中看出来什么? lua 表示调用 tests/db/oltp.lua 脚本进行 oltp 模式测试,oltp是啥就不解析了
--oltp_tables_count=15 表示会生成 15 能在K线当中看出来什么? 个测试表,数量越多,自然花费时间越长
--oltp-table-size=40000000 表示每个测试表填充数据量为 40000000 行 ,数量越多也是越时间长
--rand-init=on 表示每个测试表都是用随机数据来填充的,这样才客观
所以这里创造了15个表,里面每个表有4000万行的数据,数据为随机输入,这个数据量大概需要 150G 硬盘空间,估计可以涵盖大部分情况了吧,当然,你也可以创建更多数据.
--num-threads=1024 表示发起1024个并发连接
--oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试
--report-interval=10 表示每10秒输出一次测试进度报告
--rand-type=uniform 表示随机类型为固定模式,其他几个可选随机模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)
--max-time=3600 能在K线当中看出来什么? 表示最大执行时长为3600秒,测试将在这个时间后结束
--max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长
--percentile=99 表示设定采样比例,默认是 95%,即丢弃1%的长请求,在剩余的99%里取最大值
阅读测试报告
题外说明
测试结果示例说明的例子,其实是加上了高可用keepalived的测试结果, 每秒事务数Tps达335.29,每秒查询数Qps达6035.29,平均延时3052.99ms ,总的来说算好,也还只是比纯mysql主从损耗10%范围内,可以接受,毕竟可用性高了很多,而且后续压力增大也可以随时增加mycat数量来填补.
我们在 10.21.128.208 和 10.21.128.209上安装keepalived和修改配置.
rr:轮循调度(Round Robin)算法,不管服务器上实际的连接数和系统负载,把连接轮流的发放到每一个real_server上.优点是必然每个 real_server 都有操作,缺点是长短连接容易分配不均衡.
wrr:加权 轮循调度 (Weighted Round Robin) 算法 ,大体和rr一样,但是规则上多了一个权重判断,通过参数weight判断那个 real_server 分发多一些任务,优缺点和rr也一致.
lc:最小连接调度算法,能在K线当中看出来什么? 把新的连接请求分配到当前连接数最小的 real_server 能在K线当中看出来什么? 上.优点是能相对平均分配连接请求,缺点是可能出现局部大量短连接打到一个节点上的情况.
wlc: 加权 最小连接调度算法 ,大体和lc一致,优缺点也一致, 规则上多了一个权重判断,通过参数weight判断那个 real_server 分发多一些任务.
注意1:LVS+DR模式中,只支持IP的转发,不支持端口转发,也就是说在keepalived.conf的virtual_server和real_server的配置节点中端口必须一样。
注意2:配置负载均衡模式强烈建议VIP和后端真实服务器IP同网段,不然会出现一些奇葩情况,得不偿失.
在 10.21.128.200 , 10.21.128.201, 10.21.128.156上创建并执行下面的脚本,
在 10.21.128.208 和 10.21.128.209上执行
能在K线当中看出来什么? 注意:如果是检测不正常的IP和端口,在ipvsadm -L命令下是看不到IP地址的,因为被keepalived主动下线了,这个时候你要检查相关IP和端口为什么检测不通过的原因.
如果应用都用tcp或者http的长连接,因为建立tcp连接或者http连接开销比较大,而应用端其实是需要频繁跟server端通讯的,这时候保持长连接无疑是非常合适的。经过摸索, lvs & keepalived 长连接的配置主要在三个地方:
一,client端的SoTimeout, 就java来说就是java.net.Socket的setSoTimeout方法设置的, setSoTimeout(0)就是表明超时时间无限大。这个值是为读取阻塞设置超时的。