Qihoo360将他们改造后的MySQL Proxy项目开源了,至于为什么起名Atlas就不清楚了,项目地址:https://github.com/Qihoo360/Atlas。我2008年曾测试过官方版本的MySQL Proxy,主要是看中其连接池以及读写分离功能,不过当时的版本效率实在太差,后面就没再关注
Qihoo360将他们改造后的MySQL Proxy项目开源了,至于为什么起名Atlas就不清楚了,项目地址:https://github.com/Qihoo360/Atlas。我2008年曾测试过官方版本的MySQL Proxy,主要是看中其连接池以及读写分离功能,不过当时的版本效率实在太差,后面就没再关注了。这几天对Qihoo360 Atlas做了下测试,下面是测试结果。
- 环境准备
服务器端:
测试机 DELL PE R710
CPU E5620 @ 2.40GHz(4 core, 8 threads) * 2
内存 24G
RAID卡 PERC H700 Integrated, 512MB, BBU, 12.10.1-0001
系统 Red Hat Enterprise Linux Server release 6.4 (Santiago)
内核 2.6.32-358.el6.x86_64 #1 SMP
raid级别 raid 5(10K RPM SAS 300G * 6)
文件系统 xfs
硬盘 10K RPM SAS 300G * 6
Proxy代理层端:
测试机 HP DL360 G5
CPU E5405@ 2.00GHz(4 core, 4 threads) * 2
内存 16G
RAID卡 P400i 256MB, BBU,4.12
系统 Red Hat Enterprise Linux Server release 6.1 (Santiago)
内核 2.6.32-131.0.15.el6.x86_64#1 SMP
raid级别 raid 0(10K RPM SAS 146G * 2)
文件系统 ext4
硬盘 10K RPM SAS 146G* 2
- MySQL及Atlas关键配置 [yejr@imysql.com]# cat /etc/my.cnf max_connections = 2048 max_connect_errors = 100000 [yejr@imysql.com]# cat /usr/local/mysql-proxy/conf/13306.cnf event-threads = 16 min-idle-connections = 768
- 测试方案
1. 采用tpcc-mysql进行压测,但由于Atlas不支持PREPARE,未遂;
2. 采用sysbench进行压测,但由于Atlas当前版本对长连接支持不佳,出现大量的connection lost告警,测试结果几乎无效,忽略;
3. 采用开发者提供的一个简易C程序,进行并发多线程短连接测试,虽然有部分connection lost告警,但比用sysbench时少多了,结果有效;
开发者提供的C程序,若有需要可向开发者提出,由于未得到授权,我不方便将其放上来供下载。
测试模式:
测试程序并发数:32、64、128、192、256、320、384、448、512、576、640,每线程完成10000次请求,每次请求都是随机的SELECT、INSERT、UPDATE,,每次UPDATE都是基于主键条件,INSERT就不用说了,SELECT有4种随机模式:
a)/*master*/SELECT * FROM mysqlslap.t1 WHERE /*waht*/id in (N1, N2, N3)
b)SELECT * FROM mysqlslap.t1 WHERE id = N
c)SELECT * FROM mysqlslap.t1 WHERE id in (N1, N2) limit 1
d)/*master*/SELECT * FROM /*test*/ mysqlslap.t1 WHERE id = %d
也就是SELECT请求会模拟强制读MASTER,或者让Atlas自动分配。
- 测试脚本
测试脚本很简单:
[yejr@imysql.com]# cat Atlas_benchmark.sh #!/bin/bash MYSERVER=10.0.0.1 PORT=13306 export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql for THREAD in 32 64 128 192 256 320 384 448 512 576 640 do #记录日志 exec 3>&1 4>&2 1>> check_1m3s_1server_1proxy_${THREAD}_${RANDOM}.log 2>&1 count=1 max=5 #每种并发模式都进行5轮测试,最后取结果平均值 while [ $count -le ${max} ] do echo "./check -t short -c ${THREAD} -h ${MYSERVER} -P ${PORT} -u proxy -p proxy -n 10000" ./check -t short -c ${THREAD} -h ${MYSERVER} -P ${PORT}-u proxy -p proxy -n 10000 count=`expr ${count} + 1` #每次测试完,都会暂停60秒,让数据库歇歇 :) if [ ${count} -lt ${max} ] ; then sleep 60 fi done done测试完后对结果进行整理汇总即可。
- 测试结果
测试成功次数
Atlas Proxy并发测试成功次数 – 20130911
测试成功率
Atlas Proxy并发测试成功率 – 20130911
- 结论及建议
Qihoo360开源的精神值得学习,不过目前来看Atlas还有一定提升空间,不妨等它更加稳定并且能支持更多特性后再上线使用不迟。
但是对那些苦于无法将slave从库资源利用起来的同学们来说,在前端加一层Atlas倒是很不错的选择,毕竟其他可选的产品太少了,只要程序中不用到特殊的SQL一般也不会有大问题,注意提高程序对数据的容错性即可。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

在mysql中,可利用“ALTER TABLE 表名 DROP INDEX unique key名”语句来删除unique key;ALTER TABLE语句用于对数据进行添加、删除或修改操作,DROP INDEX语句用于表示删除约束操作。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Mac version
God-level code editing software (SublimeText3)

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.