SlideShare uma empresa Scribd logo
1 de 28
QQ邮箱系统优化
广州研发中心 Harvey
目录
QQMAIL总体架构
服务器性能优化
网络性能优化
代码框架优化
QQMAIL总体架构(简图)
QQMAIL总体架构
Web: 支持95%的登录请求。提供读信、写信、用户信息管理等功能。
BG:邮件队列,负责将本域用户发出的邮件投递到目标地址。
MX(Mail eXchange):接收外域邮件运营商发往本域的邮件。
POP/SMTP:提供基于Mail Client的服务。
QS:向QQ Client提供新邮件Notify服务。
Account:存储邮箱名/UIN映射关系。以及开通状态等主属性。
MS(Mail Storage):存储邮件实体。
IndexServer:用户个人信息,包括:邮件索引(发件人、主题、MS
FileID等),文件夹,帐户配置信息、个人过滤规则、个人黑白名单6
种数据。
目录
QQMAIL总体架构
服务器性能优化
网络性能优化
代码框架优化
服务器性能优化
从何处入手?
服务器性能优化-数据收集
注:2006年4月数据,目前(2007年10月)约为当时的10-15倍。
系统主要瓶颈为IndexServer的Disk I/O。数据量600G,4,000
万小文件。
QS查询:1.4亿/天,BITMAP过滤后的有效次数1,800万/天(仅
访问新邮件索引)--每次QQ登录仅访问一次,内存Cache效
果差。
IndexServer读访问:6,266万/天(不含QS查询),内存
Cache命中率(保持10/30/60/120/960分钟)分别为:
73%,76%,78%,78%,82%。
IndexServer增/删/改访问:1,590万/天。
服务器性能优化-设定目标
优化Index Disk I/O
支持数据扩展--不修改服务器代码条件下动态扩展结构
支持备份
避免风险--采用简单设计
服务器性能优化方案-NewMailSvr
构建专门的“新邮件服务器”,面向QS (占总查询量的
22%) ,专用于缓存新邮件索引数据。
特点:
无内存Cache
每用户使用固定4K盘块存储最近若干封新邮件
按UIN直接定位盘块偏移位置
服务器性能优化方案- IndexServer
引入内存Cache:选择半小时76%命中率方案
改变存储结构:散列文件=>桶文件
10,000连续UIN划分一个用户组。One Group One Lock
数据分配以块为单位。每用户组有15个桶文件,分别用于
分配1K/2K/4K/…/16M的数据块(2倍递增)。
使用桶文件头部的BITMAP管理数据块。
服务器性能优化-桶文件结构
Client
IndexServer
Data Block Index
Type
Block
Size
PosUIN
Mail
Index
2K 251234
Folder 1K 3115678
…… …… …………
……1K桶文件
……2K桶文件
2^nK桶文件 ………
指向
1.读
用
户
邮
件
索
引
2.查到文件与偏移
3.读磁盘
4.获得数据
5.返回
BITMAP
BITMAP
Barrel <N>
服务器性能优化-桶文件结构-可扩展结构
Record Data Object 1
Field1 Field2
全局字段配置表1
Field1=STR
Field2=LONG
Physical
Record
Interpretor
Value1 Value2
全局字段配置表2
Field1=STR
Field2=LONG
Field3=BIT
Record Data Object 2
Value1 Value2 Value3
通过字段配置表动态
解释存储数据,扩展
字段时无须割接
服务器性能优化-效果
单机性能:IndexServer提升4.1倍,峰值压力下保持平稳。
整体性能:NewMailSvr使整体再度提升20%。
数据扩展:无代码修改及割接条件下,目前数据类型已从6种扩
展到20种,原类型的字段扩展超过30个。
文件数缩减:9亿号段下最大135万文件,约为改造前的1/300。
备份:文件数缩减及组锁定策略使备份易于实施。
在线性能对比
0
10
20
30
40
50
60
70
80
90
1
7
13
19
25
31
37
43
49
55
61
67
73
79
85
91
97
103
109
115
Old UD
New UD
新旧IdxSvr性能
曲线(纵轴为毫
秒,横轴为小时)
服务器性能优化
Anything else?
服务器性能优化-性能监控
定义专项的性能日志,与监控平台连接,反应时间1小时。
先敌发现,先行摧毁!
后台服务器跟踪
访问接口
关键调用
CGI性能跟踪
CGI整体运行时间
后台接口调用时间
每日邮件自动报警
服务器性能优化-监控图表
服务器性能优化-小技巧
实现TimeTrack对象,在构造时开始计时,析构时记录时间。
在每个函数开始位置嵌入TimeTrack对象,可以得到类似
Quantify的报表。
目录
QQMAIL总体架构
服务器性能优化
网络性能优化
代码框架优化
网络性能优化-数据采集-JS上报
JS上报:收集的数据包含了页面下载延时和浏览器运算时间,
能够真实反映用户访问速度。
网络性能优化-数据采集
网络性能优化-设定目标
登录平均时间控制在8秒以内(国内最快的邮箱)
着重优化登录时间超过30秒的慢速用户
网络性能优化-Squid代理方案
北京、天津、广州等6个IDC部署Squid代理,超过30s的用户比例从4%下
降到3%。
检测Web服务器
状态,自动屏蔽
故障web服务器
Proxy根据IP校准表
将错误接入的连接
重定向到正确区域
按来源IP返回电信
或网通Proxy地址
网络性能优化-静态资源分离
静态资源存储在独立的RES服务器上
采用qhttp,提升负荷能力
静态资源通过CDN进行分布,用户就近访问,提高访问速度。
相同文件下载速度从310ms提升到250ms。
网络性能优化-其它方案
基于CGI的页面输出,相比Ajax,在QQMAIL用户模型下获得
更优速度,排除了浏览器的性能干扰,且易于监控。
缩减链接数
静态资源HTTP ZIP传输
目录
QQMAIL总体架构
服务器性能优化
网络性能优化
代码框架优化
代码框架优化-CGI输出
HTTP Server
CGI
XML
模板解析器 Template
HTML
显示 IE浏览器
AJAX引擎
TemplateDOM组合器
显示 IE浏览器
Ajax技术 传统HTML技术
一套CGI同时支持
AJAX和传统HTML
技术。
代码框架优化-CGI代码框架
CGI程序从基础CGI对象继承,提供以下功能:
强制的Session检查机制
统一的错误处理(Exception)
命令行调试机制
XML到HTML数据格式转换
提升开发效率和安全性
Standard Library
Session校验机制
CGI Framework
自定义处理程序
输出数据格式转换错误标准处理机制
调试机制
Q&A

Mais conteúdo relacionado

Mais de George Ang

Wrapper induction construct wrappers automatically to extract information f...
Wrapper induction   construct wrappers automatically to extract information f...Wrapper induction   construct wrappers automatically to extract information f...
Wrapper induction construct wrappers automatically to extract information f...George Ang
 
Opinion mining and summarization
Opinion mining and summarizationOpinion mining and summarization
Opinion mining and summarizationGeorge Ang
 
Huffman coding
Huffman codingHuffman coding
Huffman codingGeorge Ang
 
Do not crawl in the dust 
different ur ls similar text
Do not crawl in the dust 
different ur ls similar textDo not crawl in the dust 
different ur ls similar text
Do not crawl in the dust 
different ur ls similar textGeorge Ang
 
大规模数据处理的那些事儿
大规模数据处理的那些事儿大规模数据处理的那些事儿
大规模数据处理的那些事儿George Ang
 
腾讯大讲堂02 休闲游戏发展的文化趋势
腾讯大讲堂02 休闲游戏发展的文化趋势腾讯大讲堂02 休闲游戏发展的文化趋势
腾讯大讲堂02 休闲游戏发展的文化趋势George Ang
 
腾讯大讲堂03 qq邮箱成长历程
腾讯大讲堂03 qq邮箱成长历程腾讯大讲堂03 qq邮箱成长历程
腾讯大讲堂03 qq邮箱成长历程George Ang
 
腾讯大讲堂04 im qq
腾讯大讲堂04 im qq腾讯大讲堂04 im qq
腾讯大讲堂04 im qqGeorge Ang
 
腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道George Ang
 
腾讯大讲堂07 qq空间
腾讯大讲堂07 qq空间腾讯大讲堂07 qq空间
腾讯大讲堂07 qq空间George Ang
 
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨George Ang
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站George Ang
 
腾讯大讲堂10 customer engagement
腾讯大讲堂10 customer engagement腾讯大讲堂10 customer engagement
腾讯大讲堂10 customer engagementGeorge Ang
 
腾讯大讲堂11 拍拍ce工作经验分享
腾讯大讲堂11 拍拍ce工作经验分享腾讯大讲堂11 拍拍ce工作经验分享
腾讯大讲堂11 拍拍ce工作经验分享George Ang
 
腾讯大讲堂14 qq直播(qq live) 介绍
腾讯大讲堂14 qq直播(qq live) 介绍腾讯大讲堂14 qq直播(qq live) 介绍
腾讯大讲堂14 qq直播(qq live) 介绍George Ang
 
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍George Ang
 
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍George Ang
 
腾讯大讲堂16 产品经理工作心得分享
腾讯大讲堂16 产品经理工作心得分享腾讯大讲堂16 产品经理工作心得分享
腾讯大讲堂16 产品经理工作心得分享George Ang
 
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)George Ang
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向George Ang
 

Mais de George Ang (20)

Wrapper induction construct wrappers automatically to extract information f...
Wrapper induction   construct wrappers automatically to extract information f...Wrapper induction   construct wrappers automatically to extract information f...
Wrapper induction construct wrappers automatically to extract information f...
 
Opinion mining and summarization
Opinion mining and summarizationOpinion mining and summarization
Opinion mining and summarization
 
Huffman coding
Huffman codingHuffman coding
Huffman coding
 
Do not crawl in the dust 
different ur ls similar text
Do not crawl in the dust 
different ur ls similar textDo not crawl in the dust 
different ur ls similar text
Do not crawl in the dust 
different ur ls similar text
 
大规模数据处理的那些事儿
大规模数据处理的那些事儿大规模数据处理的那些事儿
大规模数据处理的那些事儿
 
腾讯大讲堂02 休闲游戏发展的文化趋势
腾讯大讲堂02 休闲游戏发展的文化趋势腾讯大讲堂02 休闲游戏发展的文化趋势
腾讯大讲堂02 休闲游戏发展的文化趋势
 
腾讯大讲堂03 qq邮箱成长历程
腾讯大讲堂03 qq邮箱成长历程腾讯大讲堂03 qq邮箱成长历程
腾讯大讲堂03 qq邮箱成长历程
 
腾讯大讲堂04 im qq
腾讯大讲堂04 im qq腾讯大讲堂04 im qq
腾讯大讲堂04 im qq
 
腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道
 
腾讯大讲堂07 qq空间
腾讯大讲堂07 qq空间腾讯大讲堂07 qq空间
腾讯大讲堂07 qq空间
 
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站
 
腾讯大讲堂10 customer engagement
腾讯大讲堂10 customer engagement腾讯大讲堂10 customer engagement
腾讯大讲堂10 customer engagement
 
腾讯大讲堂11 拍拍ce工作经验分享
腾讯大讲堂11 拍拍ce工作经验分享腾讯大讲堂11 拍拍ce工作经验分享
腾讯大讲堂11 拍拍ce工作经验分享
 
腾讯大讲堂14 qq直播(qq live) 介绍
腾讯大讲堂14 qq直播(qq live) 介绍腾讯大讲堂14 qq直播(qq live) 介绍
腾讯大讲堂14 qq直播(qq live) 介绍
 
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍
 
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍
腾讯大讲堂15 市场研究及数据分析理念及方法概要介绍
 
腾讯大讲堂16 产品经理工作心得分享
腾讯大讲堂16 产品经理工作心得分享腾讯大讲堂16 产品经理工作心得分享
腾讯大讲堂16 产品经理工作心得分享
 
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向
 

腾讯大讲堂06 qq邮箱性能优化