cari
Rumahpangkalan datatutorial mysqlQihoo360 Atlas MySQL Proxy测试小结

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

测试成功率

Atlas Proxy并发测试成功率 - 20130911

Atlas Proxy并发测试成功率 – 20130911

  • 结论及建议

Qihoo360开源的精神值得学习,不过目前来看Atlas还有一定提升空间,不妨等它更加稳定并且能支持更多特性后再上线使用不迟。

但是对那些苦于无法将slave从库资源利用起来的同学们来说,在前端加一层Atlas倒是很不错的选择,毕竟其他可选的产品太少了,只要程序中不用到特殊的SQL一般也不会有大问题,注意提高程序对数据的容错性即可。

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimanakah kardinaliti indeks MySQL mempengaruhi prestasi pertanyaan?Bagaimanakah kardinaliti indeks MySQL mempengaruhi prestasi pertanyaan?Apr 14, 2025 am 12:18 AM

Cardinality Indeks MySQL mempunyai kesan yang signifikan terhadap prestasi pertanyaan: 1. Indeks kardinaliti yang tinggi dapat lebih berkesan menyempitkan julat data dan meningkatkan kecekapan pertanyaan; 2. Indeks kardinaliti yang rendah boleh membawa kepada pengimbasan jadual penuh dan mengurangkan prestasi pertanyaan; 3. Dalam indeks bersama, urutan kardinaliti yang tinggi harus diletakkan di depan untuk mengoptimumkan pertanyaan.

MySQL: Sumber dan Tutorial untuk Pengguna BaruMySQL: Sumber dan Tutorial untuk Pengguna BaruApr 14, 2025 am 12:16 AM

Laluan pembelajaran MySQL termasuk pengetahuan asas, konsep teras, contoh penggunaan, dan teknik pengoptimuman. 1) Memahami konsep asas seperti jadual, baris, lajur, dan pertanyaan SQL. 2) Ketahui definisi, prinsip kerja dan kelebihan MySQL. 3) menguasai operasi CRUD asas dan penggunaan lanjutan, seperti indeks dan prosedur yang disimpan. 4) Biasa dengan debugging kesilapan biasa dan cadangan pengoptimuman prestasi, seperti penggunaan rasional indeks dan pertanyaan pengoptimuman. Melalui langkah -langkah ini, anda akan memahami sepenuhnya penggunaan dan pengoptimuman MySQL.

Mysql dunia nyata: Contoh dan kes penggunaanMysql dunia nyata: Contoh dan kes penggunaanApr 14, 2025 am 12:15 AM

Aplikasi dunia nyata MySQL termasuk reka bentuk pangkalan data asas dan pengoptimuman pertanyaan kompleks. 1) Penggunaan Asas: Digunakan untuk menyimpan dan mengurus data pengguna, seperti memasukkan, menanyakan, mengemas kini dan memadam maklumat pengguna. 2) Penggunaan lanjutan: Mengendalikan logik perniagaan yang kompleks, seperti perintah dan pengurusan inventori platform e-dagang. 3) Pengoptimuman Prestasi: Meningkatkan prestasi dengan menggunakan indeks, jadual partisi dan cache pertanyaan.

Perintah SQL di MySQL: Contoh PraktikalPerintah SQL di MySQL: Contoh PraktikalApr 14, 2025 am 12:09 AM

Perintah SQL di MySQL boleh dibahagikan kepada kategori seperti DDL, DML, DQL, dan DCL, dan digunakan untuk membuat, mengubah suai, memadam pangkalan data dan jadual, memasukkan, mengemas kini, memadam data, dan melakukan operasi pertanyaan yang kompleks. 1. Penggunaan asas termasuk jadual penciptaan createtable, memasukkan data memasukkan, dan pilih data pertanyaan. 2. Penggunaan lanjutan melibatkan gabungan untuk Jadual Bergabung, Subqueries dan Groupby untuk Agregasi Data. 3. Kesilapan umum seperti kesilapan sintaks, jenis data yang tidak sepadan dan masalah kebenaran boleh disahpepijat melalui pemeriksaan sintaks, penukaran jenis data dan pengurusan kebenaran. 4. Cadangan Pengoptimuman Prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi gabungan dan menggunakan transaksi untuk memastikan konsistensi data.

Bagaimanakah InnoDB mengendalikan pematuhan asid?Bagaimanakah InnoDB mengendalikan pematuhan asid?Apr 14, 2025 am 12:03 AM

InnoDB mencapai atomik melalui undolog, konsistensi dan pengasingan melalui mekanisme penguncian dan MVCC, dan kegigihan melalui redolog. 1) Atomicity: Gunakan Undolog untuk merekodkan data asal untuk memastikan urus niaga dapat dilancarkan kembali. 2) Konsistensi: Memastikan konsistensi data melalui penguncian peringkat baris dan MVCC. 3) Pengasingan: Menyokong pelbagai tahap pengasingan, dan RepeatableRead digunakan secara lalai. 4) Kegigihan: Gunakan redolog untuk merekodkan pengubahsuaian untuk memastikan data disimpan untuk masa yang lama.

Tempat Mysql: Pangkalan Data dan PengaturcaraanTempat Mysql: Pangkalan Data dan PengaturcaraanApr 13, 2025 am 12:18 AM

Kedudukan MySQL dalam pangkalan data dan pengaturcaraan sangat penting. Ia adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pelbagai senario aplikasi. 1) MySQL menyediakan fungsi penyimpanan data, organisasi dan pengambilan data yang cekap, sistem sokongan web, mudah alih dan perusahaan. 2) Ia menggunakan seni bina pelanggan-pelayan, menyokong pelbagai enjin penyimpanan dan pengoptimuman indeks. 3) Penggunaan asas termasuk membuat jadual dan memasukkan data, dan penggunaan lanjutan melibatkan pelbagai meja dan pertanyaan kompleks. 4) Soalan -soalan yang sering ditanya seperti kesilapan sintaks SQL dan isu -isu prestasi boleh disahpepijat melalui arahan jelas dan log pertanyaan perlahan. 5) Kaedah pengoptimuman prestasi termasuk penggunaan indeks rasional, pertanyaan yang dioptimumkan dan penggunaan cache. Amalan terbaik termasuk menggunakan urus niaga dan preparedStatemen

Mysql: Dari perniagaan kecil ke perusahaan besarMysql: Dari perniagaan kecil ke perusahaan besarApr 13, 2025 am 12:17 AM

MySQL sesuai untuk perusahaan kecil dan besar. 1) Perniagaan kecil boleh menggunakan MySQL untuk pengurusan data asas, seperti menyimpan maklumat pelanggan. 2) Perusahaan besar boleh menggunakan MySQL untuk memproses data besar dan logik perniagaan yang kompleks untuk mengoptimumkan prestasi pertanyaan dan pemprosesan transaksi.

Apa yang dibaca oleh Phantom dan bagaimana InnoDB menghalang mereka (kunci seterusnya)?Apa yang dibaca oleh Phantom dan bagaimana InnoDB menghalang mereka (kunci seterusnya)?Apr 13, 2025 am 12:16 AM

InnoDB secara berkesan menghalang pembacaan hantu melalui mekanisme utama. 1) Kekunci seterusnya menggabungkan kunci baris dan kunci jurang untuk mengunci rekod dan jurang mereka untuk mengelakkan rekod baru daripada dimasukkan. 2) Dalam aplikasi praktikal, dengan mengoptimumkan pertanyaan dan menyesuaikan tahap pengasingan, persaingan kunci dapat dikurangkan dan prestasi konkurensi dapat ditingkatkan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa