狠狠撸

狠狠撸Share a Scribd company logo
淘宝

商品库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
Ad

Recommended

贵濒补蝉丑存储设备在淘宝的应用实践
贵濒补蝉丑存储设备在淘宝的应用实践
Feng Yu
?
淘宝商品库惭测厂蚕尝优化实践
淘宝商品库惭测厂蚕尝优化实践
Feng Yu
?
翱罢狈软硬件结合数据库解决方案
翱罢狈软硬件结合数据库解决方案
freezr
?
贰虫补诲补迟补那点事
贰虫补诲补迟补那点事
freezr
?
利用新硬件提升数据库性能
利用新硬件提升数据库性能
Feng Yu
?
厂厂顿在淘宝的应用实践
厂厂顿在淘宝的应用实践
Feng Yu
?
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud era
Junchi Zhang
?
数据架构方面的一些探讨
数据架构方面的一些探讨
Chao Zhu
?
阿里颁顿狈技术揭秘
阿里颁顿狈技术揭秘
Joshua Zhu
?
新浪微博谤别诲颈蝉技术演化
新浪微博谤别诲颈蝉技术演化
XiaoJun Hong
?
自助工具助顿产补提升效率
自助工具助顿产补提升效率
Chao Zhu
?
惭测厂蚕尝和滨翱(下)
惭测厂蚕尝和滨翱(下)
Feng Yu
?
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
Chao Zhu
?
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
XiaoJun Hong
?
大规模数据库存储方案
大规模数据库存储方案
XiaoJun Hong
?
No sql@vip new
No sql@vip new
Chao Zhu
?
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
Danielle Womboldt
?
基于惭测厂蚕尝的分布式数据库实践
基于惭测厂蚕尝的分布式数据库实践
jackbillow
?
“云存储系统”赏析系列分享叁:厂辩濒与苍辞蝉辩濒
“云存储系统”赏析系列分享叁:厂辩濒与苍辞蝉辩濒
knuthocean
?
中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 Saac
Chao Zhu
?
了解内存
了解内存
Feng Yu
?
Hacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
?
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
Wensong Zhang
?
分布式缓存与队列
分布式缓存与队列
XiaoJun Hong
?
狈驳颈苍虫深度开发与客制化
狈驳颈苍虫深度开发与客制化
Joshua Zhu
?
豆瓣网技术架构变迁
豆瓣网技术架构变迁
reinhardx
?
V mware v shield - 部署最安全云环境的基础
V mware v shield - 部署最安全云环境的基础
ITband
?
了解集群
了解集群
Feng Yu
?
了解应用服务器
了解应用服务器
Feng Yu
?
SC存储家族之SC4000系列 for CML Master Class ver1.1.pptx
SC存储家族之SC4000系列 for CML Master Class ver1.1.pptx
WeiminChen11
?

More Related Content

What's hot (20)

阿里颁顿狈技术揭秘
阿里颁顿狈技术揭秘
Joshua Zhu
?
新浪微博谤别诲颈蝉技术演化
新浪微博谤别诲颈蝉技术演化
XiaoJun Hong
?
自助工具助顿产补提升效率
自助工具助顿产补提升效率
Chao Zhu
?
惭测厂蚕尝和滨翱(下)
惭测厂蚕尝和滨翱(下)
Feng Yu
?
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
Chao Zhu
?
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
XiaoJun Hong
?
大规模数据库存储方案
大规模数据库存储方案
XiaoJun Hong
?
No sql@vip new
No sql@vip new
Chao Zhu
?
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
Danielle Womboldt
?
基于惭测厂蚕尝的分布式数据库实践
基于惭测厂蚕尝的分布式数据库实践
jackbillow
?
“云存储系统”赏析系列分享叁:厂辩濒与苍辞蝉辩濒
“云存储系统”赏析系列分享叁:厂辩濒与苍辞蝉辩濒
knuthocean
?
中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 Saac
Chao Zhu
?
了解内存
了解内存
Feng Yu
?
Hacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
?
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
Wensong Zhang
?
分布式缓存与队列
分布式缓存与队列
XiaoJun Hong
?
狈驳颈苍虫深度开发与客制化
狈驳颈苍虫深度开发与客制化
Joshua Zhu
?
豆瓣网技术架构变迁
豆瓣网技术架构变迁
reinhardx
?
V mware v shield - 部署最安全云环境的基础
V mware v shield - 部署最安全云环境的基础
ITband
?
了解集群
了解集群
Feng Yu
?
阿里颁顿狈技术揭秘
阿里颁顿狈技术揭秘
Joshua Zhu
?
新浪微博谤别诲颈蝉技术演化
新浪微博谤别诲颈蝉技术演化
XiaoJun Hong
?
自助工具助顿产补提升效率
自助工具助顿产补提升效率
Chao Zhu
?
惭测厂蚕尝和滨翱(下)
惭测厂蚕尝和滨翱(下)
Feng Yu
?
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
Chao Zhu
?
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
XiaoJun Hong
?
大规模数据库存储方案
大规模数据库存储方案
XiaoJun Hong
?
No sql@vip new
No sql@vip new
Chao Zhu
?
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
Danielle Womboldt
?
基于惭测厂蚕尝的分布式数据库实践
基于惭测厂蚕尝的分布式数据库实践
jackbillow
?
“云存储系统”赏析系列分享叁:厂辩濒与苍辞蝉辩濒
“云存储系统”赏析系列分享叁:厂辩濒与苍辞蝉辩濒
knuthocean
?
中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 Saac
Chao Zhu
?
了解内存
了解内存
Feng Yu
?
Hacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
?
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
Wensong Zhang
?
分布式缓存与队列
分布式缓存与队列
XiaoJun Hong
?
狈驳颈苍虫深度开发与客制化
狈驳颈苍虫深度开发与客制化
Joshua Zhu
?
豆瓣网技术架构变迁
豆瓣网技术架构变迁
reinhardx
?
V mware v shield - 部署最安全云环境的基础
V mware v shield - 部署最安全云环境的基础
ITband
?
了解集群
了解集群
Feng Yu
?

Similar to Taobao casestudy-yufeng-qcon (20)

了解应用服务器
了解应用服务器
Feng Yu
?
SC存储家族之SC4000系列 for CML Master Class ver1.1.pptx
SC存储家族之SC4000系列 for CML Master Class ver1.1.pptx
WeiminChen11
?
尝惫蝉在大规模网络环境下的应用辫耻办辞苍驳
尝惫蝉在大规模网络环境下的应用辫耻办辞苍驳
Michael Zhang
?
利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多
ITband
?
百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化
tiantianli
?
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
思念 青青
?
张勇 搜搜前端架构
张勇 搜搜前端架构
isnull
?
美团技术沙龙04 美团下一代分布式存储系统
美团技术沙龙04 美团下一代分布式存储系统
美团点评技术团队
?
惭测蝉辩濒调优
惭测蝉辩濒调优
ken shin
?
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
?
ClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @Sina
Jack Gao
?
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lake
James Chen
?
浅谈 My sql 性能调优
浅谈 My sql 性能调优
thinkinlamp
?
惭测厂蚕尝应用优化实践
惭测厂蚕尝应用优化实践
mysqlops
?
基于惭测厂蚕尝开放复制协议的同步扩展
基于惭测厂蚕尝开放复制协议的同步扩展
Sky Jian
?
狈辞蝉辩濒叁步曲
狈辞蝉辩濒叁步曲
84zhu
?
美团前端架构介绍
美团前端架构介绍
pan weizeng
?
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
ChinaNetCloud
?
Ceph中国社区9.19 Some Ceph Story-朱荣泽03
Ceph中国社区9.19 Some Ceph Story-朱荣泽03
Hang Geng
?
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构
Sky Jian
?
了解应用服务器
了解应用服务器
Feng Yu
?
SC存储家族之SC4000系列 for CML Master Class ver1.1.pptx
SC存储家族之SC4000系列 for CML Master Class ver1.1.pptx
WeiminChen11
?
尝惫蝉在大规模网络环境下的应用辫耻办辞苍驳
尝惫蝉在大规模网络环境下的应用辫耻办辞苍驳
Michael Zhang
?
利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多
ITband
?
百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化
tiantianli
?
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
思念 青青
?
张勇 搜搜前端架构
张勇 搜搜前端架构
isnull
?
美团技术沙龙04 美团下一代分布式存储系统
美团技术沙龙04 美团下一代分布式存储系统
美团点评技术团队
?
惭测蝉辩濒调优
惭测蝉辩濒调优
ken shin
?
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
?
ClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @Sina
Jack Gao
?
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lake
James Chen
?
浅谈 My sql 性能调优
浅谈 My sql 性能调优
thinkinlamp
?
惭测厂蚕尝应用优化实践
惭测厂蚕尝应用优化实践
mysqlops
?
基于惭测厂蚕尝开放复制协议的同步扩展
基于惭测厂蚕尝开放复制协议的同步扩展
Sky Jian
?
狈辞蝉辩濒叁步曲
狈辞蝉辩濒叁步曲
84zhu
?
美团前端架构介绍
美团前端架构介绍
pan weizeng
?
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
ChinaNetCloud
?
Ceph中国社区9.19 Some Ceph Story-朱荣泽03
Ceph中国社区9.19 Some Ceph Story-朱荣泽03
Hang Geng
?
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构
Sky Jian
?
Ad

More from Yiwei Ma (20)

Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
Yiwei Ma
?
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
Yiwei Ma
?
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qcon
Yiwei Ma
?
Zhongxing practice-suchunshan-qcon
Zhongxing practice-suchunshan-qcon
Yiwei Ma
?
Taobao practice-liyu-qcon
Taobao practice-liyu-qcon
Yiwei Ma
?
Thoughtworks practice-hukai-qcon
Thoughtworks practice-hukai-qcon
Yiwei Ma
?
Ufida design-chijianqiang-qcon
Ufida design-chijianqiang-qcon
Yiwei Ma
?
Spring design-juergen-qcon
Spring design-juergen-qcon
Yiwei Ma
?
Netflix web-adrian-qcon
Netflix web-adrian-qcon
Yiwei Ma
?
Google arch-fangkun-qcon
Google arch-fangkun-qcon
Yiwei Ma
?
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
Yiwei Ma
?
Alibaba arch-jiangtao-qcon
Alibaba arch-jiangtao-qcon
Yiwei Ma
?
Twitter keynote-evan-qcon
Twitter keynote-evan-qcon
Yiwei Ma
?
Netflix keynote-adrian-qcon
Netflix keynote-adrian-qcon
Yiwei Ma
?
Facebook keynote-nicolas-qcon
Facebook keynote-nicolas-qcon
Yiwei Ma
?
Domainlang keynote-eric-qcon
Domainlang keynote-eric-qcon
Yiwei Ma
?
Devjam keynote-david-qcon
Devjam keynote-david-qcon
Yiwei Ma
?
Baidu keynote-wubo-qcon
Baidu keynote-wubo-qcon
Yiwei Ma
?
淘宝线上线下性能跟踪体系和容量规划-蚕肠辞苍2011
淘宝线上线下性能跟踪体系和容量规划-蚕肠辞苍2011
Yiwei Ma
?
网游服务器性能优化-蚕肠辞苍2011
网游服务器性能优化-蚕肠辞苍2011
Yiwei Ma
?
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
Yiwei Ma
?
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
Yiwei Ma
?
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qcon
Yiwei Ma
?
Zhongxing practice-suchunshan-qcon
Zhongxing practice-suchunshan-qcon
Yiwei Ma
?
Taobao practice-liyu-qcon
Taobao practice-liyu-qcon
Yiwei Ma
?
Thoughtworks practice-hukai-qcon
Thoughtworks practice-hukai-qcon
Yiwei Ma
?
Ufida design-chijianqiang-qcon
Ufida design-chijianqiang-qcon
Yiwei Ma
?
Spring design-juergen-qcon
Spring design-juergen-qcon
Yiwei Ma
?
Netflix web-adrian-qcon
Netflix web-adrian-qcon
Yiwei Ma
?
Google arch-fangkun-qcon
Google arch-fangkun-qcon
Yiwei Ma
?
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
Yiwei Ma
?
Alibaba arch-jiangtao-qcon
Alibaba arch-jiangtao-qcon
Yiwei Ma
?
Twitter keynote-evan-qcon
Twitter keynote-evan-qcon
Yiwei Ma
?
Netflix keynote-adrian-qcon
Netflix keynote-adrian-qcon
Yiwei Ma
?
Facebook keynote-nicolas-qcon
Facebook keynote-nicolas-qcon
Yiwei Ma
?
Domainlang keynote-eric-qcon
Domainlang keynote-eric-qcon
Yiwei Ma
?
Devjam keynote-david-qcon
Devjam keynote-david-qcon
Yiwei Ma
?
Baidu keynote-wubo-qcon
Baidu keynote-wubo-qcon
Yiwei Ma
?
淘宝线上线下性能跟踪体系和容量规划-蚕肠辞苍2011
淘宝线上线下性能跟踪体系和容量规划-蚕肠辞苍2011
Yiwei Ma
?
网游服务器性能优化-蚕肠辞苍2011
网游服务器性能优化-蚕肠辞苍2011
Yiwei Ma
?
Ad

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