mysql+mycat压力检测一例
发布时间:2022-03-02 14:33:07 所属栏目:MySql教程 来源:互联网
导读:Mycat是业内知名mysql数据库中间件,其功能在各种mysql中间件中是比较丰富的.而mycat相关组件由java语言编写,部署方便.他的功能有:不透明代理,读写分离,负载均衡,数据分片等.而且因为其底层连接方式是用java的jdbc组件来连接数据库的,所以理论上是支持sql ser
Mycat是业内知名mysql数据库中间件,其功能在各种mysql中间件中是比较丰富的.而mycat相关组件由java语言编写,部署方便.他的功能有:不透明代理,读写分离,负载均衡,数据分片等.而且因为其底层连接方式是用java的jdbc组件来连接数据库的,所以理论上是支持sql server,oracle,pgsql的,但是功能上主要集中在mysql上. 优点:部署简单,功能强大,灵活性高,弥补mysql的一些功能缺失 缺点:功能开发不算十分完善,需要注意踩坑 如果按原理来说,mycat如果不做分片,纯粹只是代理的话,他所做的事情,其实更多的是数据转发,而这个转发能力,当然就是看他能有多强. 既然理论上转发能力很强,那么是不是就可以忽略不计呢,当然不是,所以需要用直连mysql的测试数据来做对比. 简单说明拓扑关系: 第一步当然是安装好mysql,这里就不详细介绍怎么安装了,但是,my.cnf的参数是有些变化的,主要原因是要适应高并发压测环境,不然就被参数限制,然后程序退出.当然了,如果你想尽量模拟线上环境,那这些限制你得思考在内,更改就需要谨慎一些,我这里只是给出一例来参考. #首先,就是要把系统的连接数和打开文件数搞起来 ulimit -SHn 65535 #想永久生效就要这样 echo " * soft nofile 65535 * hard nofile 65535 root soft nofile 65535 root hard nofile 65535 " >> /etc/security/limits.conf 然后,更改mysql配置文件参数,其他buffer_pool什么的就不列出来了,请各自看情况设置,这里只说明涉及压测相关的参数. #打开配置文件 vim /usr/local/mysql/my.cnf #其他参数我们暂时忽略,只看这些关乎压测的参数 [mysqld] #每台机都需要不一样的ID,主从环境下 server-id = 128157 #全局最大打开文件数,不可以超过系统设定的最大文件数,不然无效 open_files_limit = 65530 #innodb引擎限制一次打开表空间文件.ibd的文件描述符数量 innodb_open_files = 65530 #允许存到缓存里的表的句柄数量,压测自然要打开很多表,设大一点就对了,受系统limit和上面两个参数一起限制 table_open_cache = 65000 #实例可用最大连接数,必须设置足够大,不然连接数超出限制,测着报错不通就麻烦了,最少也比你实际要用到的多三分一 max_connections=30000 #最大每用户连接数,限制每个用户最大连接数,一定要比上面少一点 max_user_connections=20000 #最大数据包大小,做压测改大一点还是有必要 max_allowed_packet = 128M #限制了同一时间在mysqld上所有session中prepared 语句的上限,平时不用理这个参数,但是压测就需要调大一点 max_prepared_stmt_count=100000 其他参数我就不一一列举,自己看情况来设置就行,然后,重启生效待命. 软件安装 先说说压测工具的选择问题,在MySQL协议上Mycat不兼容tpcc,所以放弃tpcc。然后sysbench2.0对mycat兼容也比较欠佳,不明原因压测失败次数多,所以也只能放弃. 最后选定sysbench0.4和0.5来使用,可以顺利测出结果,而且从压测的原理来说也比较客观. (编辑:台州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |