狠狠撸

狠狠撸Share a Scribd company logo
MongoDB at
Qihoo 360
王 超
DTCC2013
? 背景
? 发展历程
a) 初涉 - 千万
b) 挑战 - 亿级
c) 试炼 - 百亿
? 展望未来
DTCC2013
So Exciting!
? High Performance
? Scalability
? Schema free
DTCC2013
初涉
2012.01
? MongoDB 2.0.2
? 2 * mongos + 3 * mongod + 3 * config
? mongod(1 primary + 1 secondary + 1 arbiter)
? 3 Servers(Xen)
? 32G RAM
? SAS 15K – RAID 5
DTCC2013
千万级数据规模
- Keeping data in RAM
? QPS < 500
? R:W ~ 4:1
? Opcounters < 20 Million
? Document < 50 Million
DTCC2013
问题
? 每天一万多个Timeout (3s)
排查
? Profiling Levels(1), slowms
? mongostat
? iostat
DTCC2013
现象
? iostat,w/s, wkB/s 有规律的间隔出现
? 与slow log能对应上,批量呈现
? 产生I/O时,mongostat状态如下
– insert/query/update 持续几秒内有所下降
– lock > 80%
– flushes = 1
DTCC2013
--syncdelay
mmap, flush memory data into disk
? 默认60秒
? 不建议太长,早晚要刷入磁盘,出来混迟早要
还的!
? RWLOCK, global Lock(ver 2.0.x)
or
db.runCommand( { setParameter: 1, syncdelay: N} )
DTCC2013
? 缩短syncdelay为5秒
? 减少了60%的timeout
继续观察…
slow query总伴随着moveChunk出现
DTCC2013
? 调整balancer启动时间,避免高峰期工作
db.settings.update
(
{ "_id" : "balancer" },
{ $set : { "activeWindow" : { start : "00:00", stop : "8:00" } } },
true
)
? Mongos Connection Pool /
VersionManager Bug,偶尔超时
DTCC2013
超时问题总结
? Syncdelay
? moveChunk, activeWindow
? BUG - Connection Pool / VersionManager
DTCC2013
挑战
亿级数据规模 - 2012.04
? 6 Servers, 64G RAM
? SAS 15K – RAID 5
? Opcounters > 50 Million
? Document > 100 Million
DTCC2013
问题
? Timeout (3s) again!
– 平均latency上涨 (毫秒->百毫秒)
– 平均lock > 50%
– 缺页非常严重
? 0:00-8:00已无法均衡白天产生的数据
DTCC2013
归根结底
? 数据超出了内存
? 纯随机读写
DTCC2013
如何让数据重返内存?
? 节省空间使用
? 增加内存资源
DTCC2013
业务应用场景
老的结构:
– _id: BSON string, hash(160 bit)
– cnum: Array
……
{
_id: “d0be2dc421be4fcd0172e5afceea3970e2f3d940”,
cnum: [0, 1, 2],
……
}
DTCC2013
压缩后的结构:
? _id: BSON Binary, hash(160 bit)
?40 bytes -> 20 bytes
? cnum: Int32
?Array -> 位运算
……
空间节省一半
其他的好处…
DTCC2013
TIPS:
注意document长度对QPS的影响
– 6000万数据
– 随机读写,数据小于内存
测试结果:
– 3K: r/s > 6000, w/s > 500
– 1K: r/s > 11000, w/s > 1500
DTCC2013
预热数据
何时预热?
– 机器重启
– 增加secondary
– 增加shard
预热工具
– dd / cat 不好使
– vmtouch:http://hoytech.com/vmtouch/
? 内置touch command (version 2.2)
DTCC2013
0:00-8:00已无法均衡白天产生的数据
原因:
? IOPS瓶颈
– shardkey: sha1, 数据散列在磁盘
DTCC2013
解决
? moveChunk 加入限速功能
? balancer开始时间恢复为 0:00-24:00
内存问题?
预估两个月后,数据会再度超出内存
DTCC2013
SSD in MongoDB
? No Raid! HBA直连,性能发挥到最好!
? PageFault? Memory? 浮云!
? Low latency
diao丝->高富帅
DTCC2013
DTCC2013
试炼
百亿级数据规模
? 100+ Servers, 64G RAM, SSD * 5
? Cluster: 20+
? Opcounters: 2+ Billion
? Document: 30+ Billion
DTCC2013
高枕无忧?NO!
? NUMA架构
? 连接的选择
? 跨IDC应用
? 如何在线迁移业务
DTCC2013
NUMA架构
现象:
? 内存无规律换入换出,pgscand/s、
pgscank/s 飙升(sar –B)
? 某核CPU使用率 100%
? mongostat Lock > 90%
? 持续阻塞时间十秒左右(64G内存)
DTCC2013
原因:
? 使用默认内存访问策略时,单NUMA节点(特别是0节点)内存使用超
出单节点内存大小时, 上述问题与linux的行为有关。
? 关闭swap问题依旧存在
解决:
numactl --interleave=all ./xxx
echo 0 > /proc/sys/vm/zone_reclaim_mode
参考:
http://docs.mongodb.org/manual/administration/production-notes/#production-numa
http://blog.jcole.us/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/
http://blog.jcole.us/2012/04/16/a-brief-update-on-numa-and-mysql/
DTCC2013
连接的选择
? 使用长连接的一次事故
– mongos/mongod crash
– 启动即挂
pthread_create failed,达到系统最大上限
DTCC2013
为什么?
? 一个连接一个线程的网络模型
? php driver < 1.2.10版本有连接泄露(超时异常时),client
设置timeout为100ms
? Client与每个mongos都建立连接,导致mongod连接X倍
? mongos/mongod 服务器复用
Mongod Conns(Threads) Nummber:
N Web Servers * N FastCGI Process * N mongos
e.g. 100 * 128 * 2 ~= 25K Conns(Threads) > maxConns
DTCC2013
如何解决?
? Fix bug - php driver
? 调整系统参数
ulimit [open files| max user processes]
/proc/sys/kernel/threads-max
/proc/sys/kernel/pid_max
/proc/sys/vm/max_map_count
? 改代码去掉maxConns限制
? Client只连接一个mongos (Zookeeper解决可靠性问题)
? 做好连接的预先规划
DTCC2013
短连接
? 创建关闭连接的开销
? 创建关闭线程的开销(no threads cache)
? Mongos Connection Pool /
VersionManager Bug,触发超时逻辑
DTCC2013
跨IDC应用-单集群
特点:
? 多机房容灾,架构、部署简单
? IDC之间依赖光纤
? 区分主次机房
? 适用于读多写少
– 基于就近选择策略(2.2版本官方自带)
DTCC2013
DTCC2013
跨IDC应用-多集群
? 数据同步 – QBUS(分布式消息队列)
DTCC2013
相比单集群优点:
? 集群独立,调整灵活
? 光纤断不影响写入,仅影响新数据同步的
实时性
? IDC瘫痪无需干预,业务切域名
(单集群模式时,主IDC瘫痪需要手动切primary)
DTCC2013
如何在线迁移业务?
? oplog实时同步程序(2.2版本自带)
– 从Secondary copy数据
(mongodump太慢,同步完oplog就跟不到了)
DTCC2013
In Future
展望未来
? WEB化集群管理
? 数据压缩
? 多线程数据同步、迁移
– 新增secondary
– 新增shard
期待:
collection lock! or document lock?
DTCC2013
Q & A
Thanks
Qihoo 360
Weibo: http://weibo.com/chancey
Email: chanceycn@gmail.com
We Are Hiring...
DTCC2013

More Related Content

What's hot (11)

Tpcc mysql
Tpcc mysqlTpcc mysql
Tpcc mysql
Tommy Chiu
?
Mysql fast share
Mysql fast shareMysql fast share
Mysql fast share
rfyiamcool
?
Openstack swift, how does it work?
Openstack swift, how does it work?Openstack swift, how does it work?
Openstack swift, how does it work?
kao kuo-tung
?
狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析
iammutex
?
MySQL-Proxy
MySQL-ProxyMySQL-Proxy
MySQL-Proxy
ruoyi ruan
?
美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术沙龙010-美团础迟濒补蝉实践美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术团队
?
ClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @Sina
Jack Gao
?
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析
vincent253
?
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
OpenSourceCamp
?
Openstack swift, how does it work?
Openstack swift, how does it work?Openstack swift, how does it work?
Openstack swift, how does it work?
kao kuo-tung
?
狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析
iammutex
?
美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术沙龙010-美团础迟濒补蝉实践美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术沙龙010-美团础迟濒补蝉实践
美团点评技术团队
?
ClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @Sina
Jack Gao
?
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析
vincent253
?
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
OpenSourceCamp
?

Viewers also liked (16)

Qihoo 360 Company presentation
Qihoo 360 Company presentationQihoo 360 Company presentation
Qihoo 360 Company presentation
Yixing Jiang
?
OH eBoard
OH eBoardOH eBoard
OH eBoard
Yixing Jiang
?
Red Tech Deep Dive on Qihoo
Red Tech Deep Dive on QihooRed Tech Deep Dive on Qihoo
Red Tech Deep Dive on Qihoo
Digicha
?
Qihoo 360 Advertising 101
Qihoo 360 Advertising 101Qihoo 360 Advertising 101
Qihoo 360 Advertising 101
David Ip
?
Technopreneurship and the Early Stage Ecosystem in China 2011
Technopreneurship and the Early Stage Ecosystem in China 2011Technopreneurship and the Early Stage Ecosystem in China 2011
Technopreneurship and the Early Stage Ecosystem in China 2011
Chris Evdemon
?
mi proyecto de vidami proyecto de vida
mi proyecto de vida
torresangie
?
InformedeficitsdqInformedeficitsdq
Informedeficitsdq
Andy Vintimilla
?
AsmirAsmir
Asmir
lmminarro
?
Historia comunicacion oral y escritaHistoria comunicacion oral y escrita
Historia comunicacion oral y escrita
erikix06
?
CEL Working: Real collaboration dayCEL Working: Real collaboration day
CEL Working: Real collaboration day
Diana González
?
Ones electromagne?tiques
Ones electromagne?tiquesOnes electromagne?tiques
Ones electromagne?tiques
jvsirerol
?
SUMMIT 2013 Bio Booklet
SUMMIT 2013 Bio BookletSUMMIT 2013 Bio Booklet
SUMMIT 2013 Bio Booklet
The Avoca Group
?
Testing/Manufacture/Kelvin Double bridge
Testing/Manufacture/Kelvin Double bridgeTesting/Manufacture/Kelvin Double bridge
Testing/Manufacture/Kelvin Double bridge
fec2020
?
Technopreneurship and the Early Stage Ecosystem in China in 2013
Technopreneurship and the Early Stage Ecosystem in China in 2013Technopreneurship and the Early Stage Ecosystem in China in 2013
Technopreneurship and the Early Stage Ecosystem in China in 2013
Chris Evdemon
?
Testing/Manufacture/Filter Impulse Testing Machine
Testing/Manufacture/Filter Impulse Testing Machine Testing/Manufacture/Filter Impulse Testing Machine
Testing/Manufacture/Filter Impulse Testing Machine
fec2020
?
Qihoo 360 Company presentation
Qihoo 360 Company presentationQihoo 360 Company presentation
Qihoo 360 Company presentation
Yixing Jiang
?
Red Tech Deep Dive on Qihoo
Red Tech Deep Dive on QihooRed Tech Deep Dive on Qihoo
Red Tech Deep Dive on Qihoo
Digicha
?
Qihoo 360 Advertising 101
Qihoo 360 Advertising 101Qihoo 360 Advertising 101
Qihoo 360 Advertising 101
David Ip
?
Technopreneurship and the Early Stage Ecosystem in China 2011
Technopreneurship and the Early Stage Ecosystem in China 2011Technopreneurship and the Early Stage Ecosystem in China 2011
Technopreneurship and the Early Stage Ecosystem in China 2011
Chris Evdemon
?
mi proyecto de vidami proyecto de vida
mi proyecto de vida
torresangie
?
InformedeficitsdqInformedeficitsdq
Informedeficitsdq
Andy Vintimilla
?
AsmirAsmir
Asmir
lmminarro
?
Historia comunicacion oral y escritaHistoria comunicacion oral y escrita
Historia comunicacion oral y escrita
erikix06
?
CEL Working: Real collaboration dayCEL Working: Real collaboration day
CEL Working: Real collaboration day
Diana González
?
Ones electromagne?tiques
Ones electromagne?tiquesOnes electromagne?tiques
Ones electromagne?tiques
jvsirerol
?
Testing/Manufacture/Kelvin Double bridge
Testing/Manufacture/Kelvin Double bridgeTesting/Manufacture/Kelvin Double bridge
Testing/Manufacture/Kelvin Double bridge
fec2020
?
Technopreneurship and the Early Stage Ecosystem in China in 2013
Technopreneurship and the Early Stage Ecosystem in China in 2013Technopreneurship and the Early Stage Ecosystem in China in 2013
Technopreneurship and the Early Stage Ecosystem in China in 2013
Chris Evdemon
?
Testing/Manufacture/Filter Impulse Testing Machine
Testing/Manufacture/Filter Impulse Testing Machine Testing/Manufacture/Filter Impulse Testing Machine
Testing/Manufacture/Filter Impulse Testing Machine
fec2020
?

Similar to Mongo db at qihoo 360 (20)

阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化
guiyingshenxia
?
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化
colderboy17
?
我对后端优化的一点想法
我对后端优化的一点想法我对后端优化的一点想法
我对后端优化的一点想法
mysqlops
?
LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發
Wei-Tsung Su
?
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
Tim Y
?
分布式碍别测-惫补濒耻别漫谈
分布式碍别测-惫补濒耻别漫谈分布式碍别测-惫补濒耻别漫谈
分布式碍别测-惫补濒耻别漫谈
lovingprince58
?
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能
Feng Yu
?
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
煜林 车
?
大规模高性能计算集群优化.辫诲蹿
大规模高性能计算集群优化.辫诲蹿大规模高性能计算集群优化.辫诲蹿
大规模高性能计算集群优化.辫诲蹿
chachachat
?
基于滨苍苍辞诲产开发的最佳实践
基于滨苍苍辞诲产开发的最佳实践基于滨苍苍辞诲产开发的最佳实践
基于滨苍苍辞诲产开发的最佳实践
wubx
?
How do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend partHow do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend part
acelyc1112009
?
硬件体系架构浅析
硬件体系架构浅析硬件体系架构浅析
硬件体系架构浅析
frogd
?
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术团队
?
5--芯片规划与设计(3学时)000000000000000000000.辫辫迟
5--芯片规划与设计(3学时)000000000000000000000.辫辫迟5--芯片规划与设计(3学时)000000000000000000000.辫辫迟
5--芯片规划与设计(3学时)000000000000000000000.辫辫迟
ssuserc8ad8a1
?
Mesos-based Data Infrastructure @ Douban
Mesos-based Data Infrastructure @ DoubanMesos-based Data Infrastructure @ Douban
Mesos-based Data Infrastructure @ Douban
Zhong Bo Tian
?
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
Yiwei Ma
?
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.com
Ho Kim
?
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010
Chuanying Du
?
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发  - 淘宝软件基础设施构建实践开源+自主开发  - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践
Wensong Zhang
?
使用 Apache IoTDB 构建工业时序数据管理解决方案的实践
使用 Apache IoTDB 构建工业时序数据管理解决方案的实践使用 Apache IoTDB 构建工业时序数据管理解决方案的实践
使用 Apache IoTDB 构建工业时序数据管理解决方案的实践
ZhangZhengming
?
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化
guiyingshenxia
?
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化
colderboy17
?
我对后端优化的一点想法
我对后端优化的一点想法我对后端优化的一点想法
我对后端优化的一点想法
mysqlops
?
LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發LinkIt Smart 7688程式開發
LinkIt Smart 7688程式開發
Wei-Tsung Su
?
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
Tim Y
?
分布式碍别测-惫补濒耻别漫谈
分布式碍别测-惫补濒耻别漫谈分布式碍别测-惫补濒耻别漫谈
分布式碍别测-惫补濒耻别漫谈
lovingprince58
?
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能
Feng Yu
?
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
煜林 车
?
大规模高性能计算集群优化.辫诲蹿
大规模高性能计算集群优化.辫诲蹿大规模高性能计算集群优化.辫诲蹿
大规模高性能计算集群优化.辫诲蹿
chachachat
?
基于滨苍苍辞诲产开发的最佳实践
基于滨苍苍辞诲产开发的最佳实践基于滨苍苍辞诲产开发的最佳实践
基于滨苍苍辞诲产开发的最佳实践
wubx
?
How do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend partHow do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend part
acelyc1112009
?
硬件体系架构浅析
硬件体系架构浅析硬件体系架构浅析
硬件体系架构浅析
frogd
?
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术团队
?
5--芯片规划与设计(3学时)000000000000000000000.辫辫迟
5--芯片规划与设计(3学时)000000000000000000000.辫辫迟5--芯片规划与设计(3学时)000000000000000000000.辫辫迟
5--芯片规划与设计(3学时)000000000000000000000.辫辫迟
ssuserc8ad8a1
?
Mesos-based Data Infrastructure @ Douban
Mesos-based Data Infrastructure @ DoubanMesos-based Data Infrastructure @ Douban
Mesos-based Data Infrastructure @ Douban
Zhong Bo Tian
?
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
Yiwei Ma
?
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.com
Ho Kim
?
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010
Chuanying Du
?
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发  - 淘宝软件基础设施构建实践开源+自主开发  - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践
Wensong Zhang
?
使用 Apache IoTDB 构建工业时序数据管理解决方案的实践
使用 Apache IoTDB 构建工业时序数据管理解决方案的实践使用 Apache IoTDB 构建工业时序数据管理解决方案的实践
使用 Apache IoTDB 构建工业时序数据管理解决方案的实践
ZhangZhengming
?

Mongo db at qihoo 360