SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
淘宝

商品库MySQL优化实践
 QCon 2011 Beijing


    核心系统数据库组
      余锋(褚霸)
    http://yufeng.info
       2011/04/08
Agenda

•   商品库项目背景介绍以及约束
•   技术要求和方案
•   性能保证
•   安全性保证
•   运维保证
•   优化成果
•   交流时间

       时刻关注企业软件开发领域的变化与创新   2
商品库(单机)情况

•   无复杂查询,离散度高
•   记录数:1亿条, 键值记录
•   记录大小:100字节
•   数据文件:170G
•   访问热点情况:20%的商品占用55%的访问量
•   读写比例: 10:1




         时刻关注企业软件开发领域的变化与创新   3
硬件选择
• 主机: Dell; PowerEdge C2100; vA00 (Rack
  Mount Chassis)
• 处理器: physical = 2, cores = 12, virtual =
  24
• 内存: 96 G
• RAID卡:LSI MegaSAS 9260/512MB
  Memory, BBU Present
• PCI-E Flash卡: Fusion-io ioDrive
  320GB/MLC
• 硬盘: SEAGATE ST3300657SS 300G x 12

         时刻关注企业软件开发领域的变化与创新                  4
软件选择

• 发行版: Red Hat Enterprise Linux Server
  release 5.4
• 内核: Kernel | 2.6.18-164.el5
• 文件系统:Ext3
• Flashcache: FB内部版本
• MySQL 版本: 5.1.48-log Source



         时刻关注企业软件开发领域的变化与创新              5
Agenda
•   商品库项目背景介绍以及约束
•   技术要求和方案
•   性能保证
•   安全性保证
•   运维保证
•   优化成果
•   交流时间

       时刻关注企业软件开发领域的变化与创新   6
商品库技术要求
• 高可用,安全第一
• 高性能,性能平稳,性价比高
• 控制运维风险




     时刻关注企业软件开发领域的变化与创新   7
技术方案
• 16 × 2 MySQL 数据库集群,数据水平切割,主
  从备份
• 采用高性价比PC服务器,大内存,强劲CPU,可
  靠性高
• 采用高性能PCI-E Flash卡作为cache, 提高系统
  的IO性能
• 充分利用系统各部件的cache, 大胆采用新技术
• 充分考虑容灾,在各个层面考虑数据的安全性


       时刻关注企业软件开发领域的变化与创新      8
系统资源规划
内存分配:
• MySQL
• InnoDB buffer pool
• OS pagecache
• 驱动程序
IO能力分配:
• 读能力,零散读,提高IOPS
• 写能力,集中写,提高吞吐量
Cache分配:
• MySQL内部cache
• 匿名页面/文件页面
• Flashcache 混合存储
• Raid卡内部cache


           时刻关注企业软件开发领域的变化与创新   9
调优指导思想
• 杜绝拍脑袋,理论(源码)指导+精确测量
  +效果验证
• 内存为王
• 数据访问规律导向,随机数据和顺序数据
  尽量分离
• 尽量提高IO的利用率,减少无谓的IO能力
  浪费
• 在安全性的前提下,尽可能的利用好系统
  各个层次cache
     时刻关注企业软件开发领域的变化与创新   10
调优工具
•   源码+emacs+大脑
•   必备工具
•   systemtap
•   oprofile
•   latencytop
•   blktrace/btt/seekwatcher
•   aspersa
•   tcprstat
•   sar
•   gdb
•   自制工具
•   bash/awk/sed脚本

• gnuplot脚本

                 时刻关注企业软件开发领域的变化与创新   11
Agenda
•   商品库项目背景介绍以及约束
•   技术要求和方案
•   性能保证
•   安全性保证
•   运维保证
•   优化成果
•   交流时间

       时刻关注企业软件开发领域的变化与创新   12
性能保证概要
•   解决IO瓶颈:
•   高速PCI-E Flash卡做Cache,读写速度可达800/500M
•   10 x SAS 300G 存放离散度高数据文件
•   2 x SAS 300G 存放顺序binlog和trx日志
•   控制数据库脏页面的刷新频率和强度
•   优化操作系统的pagecache,资源倾斜, 杜绝swap发生
•   优化文件系统减少meta数据的产生,以及写入延迟
•   优化IO调度器和预读
•   开启raid卡的读写cache
•   优化设备驱动,适应高强度的读写请求,减少jitter
•   解决CPU瓶颈:
•   业务上优化掉复杂查询
•   优化自旋锁


             时刻关注企业软件开发领域的变化与创新           13
MySQL
考虑因素:
• 复杂数据查询操作是否需要预留内存以及上限
• 数据备份dump对系统的影响,避免swap
• 开启binlog带来的性能开销
• 限制最大链接数
#############################
• max_binlog_cache_size=2G
• max_binlog_size = 500M
• max_connections = 1020
  max_user_connections=1000
• query_cache_size = 30M

        时刻关注企业软件开发领域的变化与创新      14
InnoDB引擎
考虑因素:
• 尽可能大的BP(buffer pool)
• 日志和数据分设备存储
• 离散数据走direct-IO,顺序日志走buffered-IO
• 减少脏页的同步,提高命中率
• 减少锁对多核CPU性能的影响
• 提高底层存储默认的IO能力
#############################
•   innodb_buffer_pool_size = 72G
•   innodb_flush_method = O_DIRECT
    innodb_sync_spin_loops=0
    innodb_log_group_home_dir = /u02/
    innodb_io_capacity=2000
•   innodb_thread_concurrency = 64
                   时刻关注企业软件开发领域的变化与创新   15
pagecache
考虑因素:
• page资源倾斜给数据库, 尽量不浪费,同时兼顾临时内存
  申请
• 避免NUMA架构带来的zone内存分配不均而导致的swap
  现象
• cache大部分由InnoDB日志产生,适时清除,限制page数
  量
#############################
•   # numactl --interleave=all mysqld
•   # watch -n 180 'sysctl vm.drop_caches = 1'
•   vm.swappiness = 0
•   vm.dirty_ratio = ?
•   vm.dirty_background_ratio =?
•   vm.pagecache = ?
                    时刻关注企业软件开发领域的变化与创新           16
文件系统
考虑因素(选择):
• Ext3/4
• Xfs
考虑因素(配置):
• 减少元数据变化产生的IO
• 对混合存储系统友好
• 关闭barrier
#############################
/dev/mapper/cachedev (rw,noatime,nodiratime,barrier=0) /u01
/dev/sda12 (rw,barrier=0)      /u02


                 时刻关注企业软件开发领域的变化与创新                           17
IO调度
考虑因素:
• Deadline算法对减少磁头移动
• 关闭预读
• 设备队列长度
•
#############################
• sda | [deadline] 128
• sdb | [deadline] 128

         时刻关注企业软件开发领域的变化与创新     18
混合存储(Flashcache)
考虑因素
• 结合磁盘的大容量,PCI-E Flash卡的高随机读写
  性能优点
• 数据尽可能多停留在PCI-E Flash卡上,提高读写
  命中率
• 减少同步次数,保留磁盘的IO能力
• 适时同步数据,减少安全风险
#############################
•   dev.flashcache.dirty_thresh_pct = 90
    dev.flashcache.cache_all = 0
    dev.flashcache.fast_remove = 1
    dev.flashcache.reclaim_policy = 1
                   时刻关注企业软件开发领域的变化与创新      19
Raid卡
考虑因素:
• 逻辑分卷
• Cache使用写优先,读少分配(数据无相关
  性效果不好)
• 数据安全和raid level
• 少预读



        时刻关注企业软件开发领域的变化与创新   20
Raid卡
#############################

• Controller | LSI Logic / Symbios Logic LSI MegaSAS 9260 (rev 03)
     Model | LSI MegaRAID SAS 9260-8i, PCIE interface, 8 ports
     Cache | 512MB Memory, BBU Present
       BBU | 95% Charged, Temperature 28C, isSOHGood=

•   VirtualDev Size RAID Level Disks SpnDpth Stripe Status Cache
    0(no name) 278.875 GB 1 (1-0-0)  2 1-1 64 Optimal WB, RA
    1(no name) 1.361 TB 1 (1-0-0)   2 5-5 64 Optimal WB, RA




               时刻关注企业软件开发领域的变化与创新                                21
存储设备驱动
考虑因素:
• 减少IO的抖动,提高IOPS
• 提高寿命
• 关闭或减少预读#############################
• PCI-E Flash卡驱动:
• $cat /etc/modprobe.d/iomemory-vsl.conf
• options iomemory-vsl use_workqueue=0
  options iomemory-vsl disable-msi=0
  options iomemory-vsl use_large_pcie_rx_buffer=1



            时刻关注企业软件开发领域的变化与创新                      22
Agenda
•   商品库项目背景介绍以及约束
•   技术要求和方案
•   性能保证
•   安全性保证
•   运维保证
•   优化成果
•   交流时间

       时刻关注企业软件开发领域的变化与创新   23
安全性保证概要
• Raid卡带Flash,掉电保护,raid level10防止磁盘
  损害
• PCI-E卡自身有日志系统,恢复时间最差10分钟
• Ext3文件系统带日志保护
• Flashcache上的cache数据最多24小时都会同步
  到SAS盘
• 数据库Innodb引擎本身有redo日志,数据安全校
  验,高级别日志同步
• MySQL主从备份
• 商品库应用方有事务日志
       时刻关注企业软件开发领域的变化与创新        24
Agenda
•   商品库项目背景介绍以及约束
•   技术要求和方案
•   性能保证
•   安全性保证
•   运维保证
•   优化成果
•   交流时间

       时刻关注企业软件开发领域的变化与创新   25
运维保证概要
数据预热:
• 支持热点数据每秒150M从磁盘直接加载到混合存
  储
• 数据库重新启动,无需重新预热数据库DDL 操作:
• 控制数据表的大小,让DDL时间可接受
• 减少DDL对性能的冲击
混合存储cache:
• 通过设置白名单,减少诸如备份操作对cache的
  干扰
• 混合存储cache可管理
      时刻关注企业软件开发领域的变化与创新   26
Agenda
•   商品库项目背景介绍以及约束
•   技术要求和方案
•   性能保证
•   安全性保证
•   运维保证
•   优化成果
•   交流时间

       时刻关注企业软件开发领域的变化与创新   27
优化成果
• 充足的容量规划,可对抗突增业务,满足未来几
  年业务增长
• 系统总体运行平稳,系统负载CPU util <50%,磁
  盘 util <10%,PCI-E Flash卡 util < 20%
• QPS/36000,其中读/32800,写/3200
• 请求平均延时时间:260微秒(包括网络时间)
• 掉电和操作系统失效的情况下,数据无丢失
• 第一次预热时间半个小时以内,之后只需几分钟


        时刻关注企业软件开发领域的变化与创新          28
Agenda
•   商品库项目背景介绍以及约束
•   技术要求和方案
•   性能保证
•   安全性保证
•   运维保证
•   优化成果
•   交流时间

       时刻关注企业软件开发领域的变化与创新   29
谢谢!

    Talents wanted!

联络:chuba@taobao.com




 时刻关注企业软件开发领域的变化与创新   30
杭州站 · 2011年10月20日~22日
 www.qconhangzhou.com(6月启动)




QCon北京站官方网站和资料下载
     www.qconbeijing.com

Mais conteúdo relacionado

Mais procurados

MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)
Feng Yu
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql
knuthocean
 
了解内存
了解内存了解内存
了解内存
Feng Yu
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
Wensong Zhang
 
V mware v shield - 部署最安全云环境的基础
V mware v shield - 部署最安全云环境的基础V mware v shield - 部署最安全云环境的基础
V mware v shield - 部署最安全云环境的基础
ITband
 

Mais procurados (20)

阿里CDN技术揭秘
阿里CDN技术揭秘阿里CDN技术揭秘
阿里CDN技术揭秘
 
新浪微博redis技术演化
新浪微博redis技术演化新浪微博redis技术演化
新浪微博redis技术演化
 
自助工具助Dba提升效率
自助工具助Dba提升效率自助工具助Dba提升效率
自助工具助Dba提升效率
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案
 
No sql@vip new
No sql@vip newNo sql@vip new
No sql@vip new
 
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China MobileCeph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql
 
中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 Saac中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 Saac
 
了解内存
了解内存了解内存
了解内存
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
Nginx深度開發與客制化
Nginx深度開發與客制化Nginx深度開發與客制化
Nginx深度開發與客制化
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 
V mware v shield - 部署最安全云环境的基础
V mware v shield - 部署最安全云环境的基础V mware v shield - 部署最安全云环境的基础
V mware v shield - 部署最安全云环境的基础
 
了解集群
了解集群了解集群
了解集群
 

Semelhante a Taobao casestudy-yufeng-qcon

Lvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukongLvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukong
Michael Zhang
 
利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多
ITband
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构
isnull
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
 
浅谈 My sql 性能调优
浅谈 My sql 性能调优浅谈 My sql 性能调优
浅谈 My sql 性能调优
thinkinlamp
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
Sky Jian
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
pan weizeng
 
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
ChinaNetCloud
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
丁 宇
 

Semelhante a Taobao casestudy-yufeng-qcon (20)

了解应用服务器
了解应用服务器了解应用服务器
了解应用服务器
 
Lvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukongLvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukong
 
利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多
 
百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化
 
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture][Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构
 
美团技术沙龙04 美团下一代分布式存储系统
美团技术沙龙04   美团下一代分布式存储系统美团技术沙龙04   美团下一代分布式存储系统
美团技术沙龙04 美团下一代分布式存储系统
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
ClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @Sina
 
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lake
 
浅谈 My sql 性能调优
浅谈 My sql 性能调优浅谈 My sql 性能调优
浅谈 My sql 性能调优
 
MySQL应用优化实践
MySQL应用优化实践MySQL应用优化实践
MySQL应用优化实践
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
 
Ceph中国社区9.19 Some Ceph Story-朱荣泽03
Ceph中国社区9.19 Some Ceph Story-朱荣泽03Ceph中国社区9.19 Some Ceph Story-朱荣泽03
Ceph中国社区9.19 Some Ceph Story-朱荣泽03
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构
 

Mais de Yiwei Ma

Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
Yiwei Ma
 
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
Yiwei Ma
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qcon
Yiwei Ma
 
Zhongxing practice-suchunshan-qcon
Zhongxing practice-suchunshan-qconZhongxing practice-suchunshan-qcon
Zhongxing practice-suchunshan-qcon
Yiwei Ma
 
Taobao practice-liyu-qcon
Taobao practice-liyu-qconTaobao practice-liyu-qcon
Taobao practice-liyu-qcon
Yiwei Ma
 
Thoughtworks practice-hukai-qcon
Thoughtworks practice-hukai-qconThoughtworks practice-hukai-qcon
Thoughtworks practice-hukai-qcon
Yiwei Ma
 
Ufida design-chijianqiang-qcon
Ufida design-chijianqiang-qconUfida design-chijianqiang-qcon
Ufida design-chijianqiang-qcon
Yiwei Ma
 
Spring design-juergen-qcon
Spring design-juergen-qconSpring design-juergen-qcon
Spring design-juergen-qcon
Yiwei Ma
 
Netflix web-adrian-qcon
Netflix web-adrian-qconNetflix web-adrian-qcon
Netflix web-adrian-qcon
Yiwei Ma
 
Google arch-fangkun-qcon
Google arch-fangkun-qconGoogle arch-fangkun-qcon
Google arch-fangkun-qcon
Yiwei Ma
 
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
Yiwei Ma
 
Alibaba arch-jiangtao-qcon
Alibaba arch-jiangtao-qconAlibaba arch-jiangtao-qcon
Alibaba arch-jiangtao-qcon
Yiwei Ma
 
Twitter keynote-evan-qcon
Twitter keynote-evan-qconTwitter keynote-evan-qcon
Twitter keynote-evan-qcon
Yiwei Ma
 
Netflix keynote-adrian-qcon
Netflix keynote-adrian-qconNetflix keynote-adrian-qcon
Netflix keynote-adrian-qcon
Yiwei Ma
 
Facebook keynote-nicolas-qcon
Facebook keynote-nicolas-qconFacebook keynote-nicolas-qcon
Facebook keynote-nicolas-qcon
Yiwei Ma
 
Domainlang keynote-eric-qcon
Domainlang keynote-eric-qconDomainlang keynote-eric-qcon
Domainlang keynote-eric-qcon
Yiwei Ma
 
Devjam keynote-david-qcon
Devjam keynote-david-qconDevjam keynote-david-qcon
Devjam keynote-david-qcon
Yiwei Ma
 
Baidu keynote-wubo-qcon
Baidu keynote-wubo-qconBaidu keynote-wubo-qcon
Baidu keynote-wubo-qcon
Yiwei Ma
 
淘宝线上线下性能跟踪体系和容量规划-Qcon2011
淘宝线上线下性能跟踪体系和容量规划-Qcon2011淘宝线上线下性能跟踪体系和容量规划-Qcon2011
淘宝线上线下性能跟踪体系和容量规划-Qcon2011
Yiwei Ma
 
网游服务器性能优化-Qcon2011
网游服务器性能优化-Qcon2011网游服务器性能优化-Qcon2011
网游服务器性能优化-Qcon2011
Yiwei Ma
 

Mais de Yiwei Ma (20)

Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
 
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qcon
 
Zhongxing practice-suchunshan-qcon
Zhongxing practice-suchunshan-qconZhongxing practice-suchunshan-qcon
Zhongxing practice-suchunshan-qcon
 
Taobao practice-liyu-qcon
Taobao practice-liyu-qconTaobao practice-liyu-qcon
Taobao practice-liyu-qcon
 
Thoughtworks practice-hukai-qcon
Thoughtworks practice-hukai-qconThoughtworks practice-hukai-qcon
Thoughtworks practice-hukai-qcon
 
Ufida design-chijianqiang-qcon
Ufida design-chijianqiang-qconUfida design-chijianqiang-qcon
Ufida design-chijianqiang-qcon
 
Spring design-juergen-qcon
Spring design-juergen-qconSpring design-juergen-qcon
Spring design-juergen-qcon
 
Netflix web-adrian-qcon
Netflix web-adrian-qconNetflix web-adrian-qcon
Netflix web-adrian-qcon
 
Google arch-fangkun-qcon
Google arch-fangkun-qconGoogle arch-fangkun-qcon
Google arch-fangkun-qcon
 
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
 
Alibaba arch-jiangtao-qcon
Alibaba arch-jiangtao-qconAlibaba arch-jiangtao-qcon
Alibaba arch-jiangtao-qcon
 
Twitter keynote-evan-qcon
Twitter keynote-evan-qconTwitter keynote-evan-qcon
Twitter keynote-evan-qcon
 
Netflix keynote-adrian-qcon
Netflix keynote-adrian-qconNetflix keynote-adrian-qcon
Netflix keynote-adrian-qcon
 
Facebook keynote-nicolas-qcon
Facebook keynote-nicolas-qconFacebook keynote-nicolas-qcon
Facebook keynote-nicolas-qcon
 
Domainlang keynote-eric-qcon
Domainlang keynote-eric-qconDomainlang keynote-eric-qcon
Domainlang keynote-eric-qcon
 
Devjam keynote-david-qcon
Devjam keynote-david-qconDevjam keynote-david-qcon
Devjam keynote-david-qcon
 
Baidu keynote-wubo-qcon
Baidu keynote-wubo-qconBaidu keynote-wubo-qcon
Baidu keynote-wubo-qcon
 
淘宝线上线下性能跟踪体系和容量规划-Qcon2011
淘宝线上线下性能跟踪体系和容量规划-Qcon2011淘宝线上线下性能跟踪体系和容量规划-Qcon2011
淘宝线上线下性能跟踪体系和容量规划-Qcon2011
 
网游服务器性能优化-Qcon2011
网游服务器性能优化-Qcon2011网游服务器性能优化-Qcon2011
网游服务器性能优化-Qcon2011
 

Taobao casestudy-yufeng-qcon

  • 1. 淘宝 商品库MySQL优化实践 QCon 2011 Beijing 核心系统数据库组 余锋(褚霸) http://yufeng.info 2011/04/08
  • 2. Agenda • 商品库项目背景介绍以及约束 • 技术要求和方案 • 性能保证 • 安全性保证 • 运维保证 • 优化成果 • 交流时间 时刻关注企业软件开发领域的变化与创新 2
  • 3. 商品库(单机)情况 • 无复杂查询,离散度高 • 记录数:1亿条, 键值记录 • 记录大小:100字节 • 数据文件:170G • 访问热点情况:20%的商品占用55%的访问量 • 读写比例: 10:1 时刻关注企业软件开发领域的变化与创新 3
  • 4. 硬件选择 • 主机: Dell; PowerEdge C2100; vA00 (Rack Mount Chassis) • 处理器: physical = 2, cores = 12, virtual = 24 • 内存: 96 G • RAID卡:LSI MegaSAS 9260/512MB Memory, BBU Present • PCI-E Flash卡: Fusion-io ioDrive 320GB/MLC • 硬盘: SEAGATE ST3300657SS 300G x 12 时刻关注企业软件开发领域的变化与创新 4
  • 5. 软件选择 • 发行版: Red Hat Enterprise Linux Server release 5.4 • 内核: Kernel | 2.6.18-164.el5 • 文件系统:Ext3 • Flashcache: FB内部版本 • MySQL 版本: 5.1.48-log Source 时刻关注企业软件开发领域的变化与创新 5
  • 6. Agenda • 商品库项目背景介绍以及约束 • 技术要求和方案 • 性能保证 • 安全性保证 • 运维保证 • 优化成果 • 交流时间 时刻关注企业软件开发领域的变化与创新 6
  • 7. 商品库技术要求 • 高可用,安全第一 • 高性能,性能平稳,性价比高 • 控制运维风险 时刻关注企业软件开发领域的变化与创新 7
  • 8. 技术方案 • 16 × 2 MySQL 数据库集群,数据水平切割,主 从备份 • 采用高性价比PC服务器,大内存,强劲CPU,可 靠性高 • 采用高性能PCI-E Flash卡作为cache, 提高系统 的IO性能 • 充分利用系统各部件的cache, 大胆采用新技术 • 充分考虑容灾,在各个层面考虑数据的安全性 时刻关注企业软件开发领域的变化与创新 8
  • 9. 系统资源规划 内存分配: • MySQL • InnoDB buffer pool • OS pagecache • 驱动程序 IO能力分配: • 读能力,零散读,提高IOPS • 写能力,集中写,提高吞吐量 Cache分配: • MySQL内部cache • 匿名页面/文件页面 • Flashcache 混合存储 • Raid卡内部cache 时刻关注企业软件开发领域的变化与创新 9
  • 10. 调优指导思想 • 杜绝拍脑袋,理论(源码)指导+精确测量 +效果验证 • 内存为王 • 数据访问规律导向,随机数据和顺序数据 尽量分离 • 尽量提高IO的利用率,减少无谓的IO能力 浪费 • 在安全性的前提下,尽可能的利用好系统 各个层次cache 时刻关注企业软件开发领域的变化与创新 10
  • 11. 调优工具 • 源码+emacs+大脑 • 必备工具 • systemtap • oprofile • latencytop • blktrace/btt/seekwatcher • aspersa • tcprstat • sar • gdb • 自制工具 • bash/awk/sed脚本 • gnuplot脚本 时刻关注企业软件开发领域的变化与创新 11
  • 12. Agenda • 商品库项目背景介绍以及约束 • 技术要求和方案 • 性能保证 • 安全性保证 • 运维保证 • 优化成果 • 交流时间 时刻关注企业软件开发领域的变化与创新 12
  • 13. 性能保证概要 • 解决IO瓶颈: • 高速PCI-E Flash卡做Cache,读写速度可达800/500M • 10 x SAS 300G 存放离散度高数据文件 • 2 x SAS 300G 存放顺序binlog和trx日志 • 控制数据库脏页面的刷新频率和强度 • 优化操作系统的pagecache,资源倾斜, 杜绝swap发生 • 优化文件系统减少meta数据的产生,以及写入延迟 • 优化IO调度器和预读 • 开启raid卡的读写cache • 优化设备驱动,适应高强度的读写请求,减少jitter • 解决CPU瓶颈: • 业务上优化掉复杂查询 • 优化自旋锁 时刻关注企业软件开发领域的变化与创新 13
  • 14. MySQL 考虑因素: • 复杂数据查询操作是否需要预留内存以及上限 • 数据备份dump对系统的影响,避免swap • 开启binlog带来的性能开销 • 限制最大链接数 ############################# • max_binlog_cache_size=2G • max_binlog_size = 500M • max_connections = 1020 max_user_connections=1000 • query_cache_size = 30M 时刻关注企业软件开发领域的变化与创新 14
  • 15. InnoDB引擎 考虑因素: • 尽可能大的BP(buffer pool) • 日志和数据分设备存储 • 离散数据走direct-IO,顺序日志走buffered-IO • 减少脏页的同步,提高命中率 • 减少锁对多核CPU性能的影响 • 提高底层存储默认的IO能力 ############################# • innodb_buffer_pool_size = 72G • innodb_flush_method = O_DIRECT innodb_sync_spin_loops=0 innodb_log_group_home_dir = /u02/ innodb_io_capacity=2000 • innodb_thread_concurrency = 64 时刻关注企业软件开发领域的变化与创新 15
  • 16. pagecache 考虑因素: • page资源倾斜给数据库, 尽量不浪费,同时兼顾临时内存 申请 • 避免NUMA架构带来的zone内存分配不均而导致的swap 现象 • cache大部分由InnoDB日志产生,适时清除,限制page数 量 ############################# • # numactl --interleave=all mysqld • # watch -n 180 'sysctl vm.drop_caches = 1' • vm.swappiness = 0 • vm.dirty_ratio = ? • vm.dirty_background_ratio =? • vm.pagecache = ? 时刻关注企业软件开发领域的变化与创新 16
  • 17. 文件系统 考虑因素(选择): • Ext3/4 • Xfs 考虑因素(配置): • 减少元数据变化产生的IO • 对混合存储系统友好 • 关闭barrier ############################# /dev/mapper/cachedev (rw,noatime,nodiratime,barrier=0) /u01 /dev/sda12 (rw,barrier=0) /u02 时刻关注企业软件开发领域的变化与创新 17
  • 18. IO调度 考虑因素: • Deadline算法对减少磁头移动 • 关闭预读 • 设备队列长度 • ############################# • sda | [deadline] 128 • sdb | [deadline] 128 时刻关注企业软件开发领域的变化与创新 18
  • 19. 混合存储(Flashcache) 考虑因素 • 结合磁盘的大容量,PCI-E Flash卡的高随机读写 性能优点 • 数据尽可能多停留在PCI-E Flash卡上,提高读写 命中率 • 减少同步次数,保留磁盘的IO能力 • 适时同步数据,减少安全风险 ############################# • dev.flashcache.dirty_thresh_pct = 90 dev.flashcache.cache_all = 0 dev.flashcache.fast_remove = 1 dev.flashcache.reclaim_policy = 1 时刻关注企业软件开发领域的变化与创新 19
  • 20. Raid卡 考虑因素: • 逻辑分卷 • Cache使用写优先,读少分配(数据无相关 性效果不好) • 数据安全和raid level • 少预读 时刻关注企业软件开发领域的变化与创新 20
  • 21. Raid卡 ############################# • Controller | LSI Logic / Symbios Logic LSI MegaSAS 9260 (rev 03) Model | LSI MegaRAID SAS 9260-8i, PCIE interface, 8 ports Cache | 512MB Memory, BBU Present BBU | 95% Charged, Temperature 28C, isSOHGood= • VirtualDev Size RAID Level Disks SpnDpth Stripe Status Cache 0(no name) 278.875 GB 1 (1-0-0) 2 1-1 64 Optimal WB, RA 1(no name) 1.361 TB 1 (1-0-0) 2 5-5 64 Optimal WB, RA 时刻关注企业软件开发领域的变化与创新 21
  • 22. 存储设备驱动 考虑因素: • 减少IO的抖动,提高IOPS • 提高寿命 • 关闭或减少预读############################# • PCI-E Flash卡驱动: • $cat /etc/modprobe.d/iomemory-vsl.conf • options iomemory-vsl use_workqueue=0 options iomemory-vsl disable-msi=0 options iomemory-vsl use_large_pcie_rx_buffer=1 时刻关注企业软件开发领域的变化与创新 22
  • 23. Agenda • 商品库项目背景介绍以及约束 • 技术要求和方案 • 性能保证 • 安全性保证 • 运维保证 • 优化成果 • 交流时间 时刻关注企业软件开发领域的变化与创新 23
  • 24. 安全性保证概要 • Raid卡带Flash,掉电保护,raid level10防止磁盘 损害 • PCI-E卡自身有日志系统,恢复时间最差10分钟 • Ext3文件系统带日志保护 • Flashcache上的cache数据最多24小时都会同步 到SAS盘 • 数据库Innodb引擎本身有redo日志,数据安全校 验,高级别日志同步 • MySQL主从备份 • 商品库应用方有事务日志 时刻关注企业软件开发领域的变化与创新 24
  • 25. Agenda • 商品库项目背景介绍以及约束 • 技术要求和方案 • 性能保证 • 安全性保证 • 运维保证 • 优化成果 • 交流时间 时刻关注企业软件开发领域的变化与创新 25
  • 26. 运维保证概要 数据预热: • 支持热点数据每秒150M从磁盘直接加载到混合存 储 • 数据库重新启动,无需重新预热数据库DDL 操作: • 控制数据表的大小,让DDL时间可接受 • 减少DDL对性能的冲击 混合存储cache: • 通过设置白名单,减少诸如备份操作对cache的 干扰 • 混合存储cache可管理 时刻关注企业软件开发领域的变化与创新 26
  • 27. Agenda • 商品库项目背景介绍以及约束 • 技术要求和方案 • 性能保证 • 安全性保证 • 运维保证 • 优化成果 • 交流时间 时刻关注企业软件开发领域的变化与创新 27
  • 28. 优化成果 • 充足的容量规划,可对抗突增业务,满足未来几 年业务增长 • 系统总体运行平稳,系统负载CPU util <50%,磁 盘 util <10%,PCI-E Flash卡 util < 20% • QPS/36000,其中读/32800,写/3200 • 请求平均延时时间:260微秒(包括网络时间) • 掉电和操作系统失效的情况下,数据无丢失 • 第一次预热时间半个小时以内,之后只需几分钟 时刻关注企业软件开发领域的变化与创新 28
  • 29. Agenda • 商品库项目背景介绍以及约束 • 技术要求和方案 • 性能保证 • 安全性保证 • 运维保证 • 优化成果 • 交流时间 时刻关注企业软件开发领域的变化与创新 29
  • 30. 谢谢! Talents wanted! 联络:chuba@taobao.com 时刻关注企业软件开发领域的变化与创新 30
  • 31. 杭州站 · 2011年10月20日~22日 www.qconhangzhou.com(6月启动) QCon北京站官方网站和资料下载 www.qconbeijing.com