28
QQ 邮邮邮 邮邮 广广广广广广 Harvey

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

Embed Size (px)

DESCRIPTION

 

Citation preview

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

QQ邮箱系统优化

广州研发中心 Harvey

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

目录

QQMAIL 总体架构服务器性能优化网络性能优化代码框架优化

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

QQMAIL 总体架构(简图)

MX服务器 WEB服务器 QS服务器 SMTP服务器 POP3服务器

用户数据服务器(IndexSvr)

MS服务器 Account服务器

BG服务器

盘柜

外网

内网

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

QQMAIL 总体架构

Web : 支持 95% 的登录请求。提供读信、写信、用户信息管理等功能。BG :邮件队列,负责将本域用户发出的邮件投递到目标地址。MX ( Mail eXchange ):接收外域邮件运营商发往本域的邮件。POP/SMTP :提供基于 Mail Client 的服务。QS :向 QQ Client 提供新邮件 Notify 服务。

Account :存储邮箱名 /UIN 映射关系。以及开通状态等主属性。MS ( Mail Storage ):存储邮件实体。IndexServer :用户个人信息,包括:邮件索引(发件人、主题、 MS FileID 等),文件夹,帐户配置信息、个人过滤规则、个人黑白名单 6 种数据。

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

目录

QQMAIL 总体架构服务器性能优化网络性能优化代码框架优化

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

服务器性能优化

从何处入手?

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

服务器性能优化-数据收集

注: 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 万 / 天。

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

服务器性能优化-设定目标

优化 Index Disk I/O

支持数据扩展--不修改服务器代码条件下动态扩展结构支持备份避免风险--采用简单设计

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

服务器性能优化方案- NewMailSvr

构建专门的“新邮件服务器”,面向 QS (占总查询量的 22

% ) ,专用于缓存新邮件索引数据。特点:

无内存 Cache

每用户使用固定 4K 盘块存储最近若干封新邮件按 UIN 直接定位盘块偏移位置

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

服务器性能优化方案- IndexServer

引入内存 Cache :选择半小时 76% 命中率方案改变存储结构:散列文件 => 桶文件

10,000 连续 UIN 划分一个用户组。 One Group One Lock

数据分配以块为单位。每用户组有 15 个桶文件,分别用于分配 1K/2K/4K/…/16M 的数据块( 2 倍递增)。使用桶文件头部的 BITMAP 管理数据块。

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

服务器性能优化-桶文件结构

Cl i ent

I ndexServer

Data Bl ock I ndex

TypeBl ockSi ze

PosUI N

Mai l I ndex

2K 251234

Fol der 1K 3115678

…… …… …………

……1K桶文件

……2K桶文件

2̂ nK桶文件 ………

指向

1.读用户邮件索引

2.查到文件与偏移

3.读磁盘4.获得数据

5.返回

BI TMAP

BI TMAP

Barrel <N>

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

服务器性能优化-桶文件结构-可扩展结构

Record Data Object 1

Field1 Field2

全局字段配置表1 Field1=STR

Field2=LONG

PhysicalRecord

Interpretor

Value1 Value2

全局字段配置表2 Field1=STR

Field2=LONGField3=BIT

Record Data Object 2

Value1 Value2 Value3

通过字段配置表动态解释存储数据,扩展字段时无须割接

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

服务器性能优化-效果

单机性能: IndexServer 提升 4.1 倍,峰值压力下保持平稳。整体性能: NewMailSvr 使整体再度提升 20% 。数据扩展:无代码修改及割接条件下,目前数据类型已从 6 种扩展到 20 种,原类型的字段扩展超过 30 个。文件数缩减: 9 亿号段下最大 135 万文件,约为改造前的 1/30

0 。备份:文件数缩减及组锁定策略使备份易于实施。在线性能对比

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

Ol d UDNew UD

新旧 IdxSvr 性能曲线(纵轴为毫秒,横轴为小时)

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

服务器性能优化

Anything else?

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

服务器性能优化-性能监控

定义专项的性能日志,与监控平台连接,反应时间 1 小时。先敌发现,先行摧毁 !

后台服务器跟踪访问接口关键调用

CGI 性能跟踪CGI 整体运行时间后台接口调用时间

每日邮件自动报警

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

服务器性能优化-监控图表

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

服务器性能优化-小技巧

实现 TimeTrack对象,在构造时开始计时,析构时记录时间。在每个函数开始位置嵌入 TimeTrack对象,可以得到类似 Qua

ntify 的报表。

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

目录

QQMAIL 总体架构服务器性能优化网络性能优化代码框架优化

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

网络性能优化-数据采集- JS上报

JS上报:收集的数据包含了页面下载延时和浏览器运算时间,能够真实反映用户访问速度。

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

网络性能优化-数据采集

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

网络性能优化-设定目标

登录平均时间控制在 8秒以内(国内最快的邮箱)着重优化登录时间超过 30秒的慢速用户

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

网络性能优化- Squid 代理方案

北京、天津、广州等 6 个 IDC 部署 Squid 代理,超过 30s 的用户比例从 4% 下降到 3% 。

http://mail.qq.com3DNS

IP校准表

Web Srv Web SrvWeb Srv Web SrvWeb Srv

IP校准表

电信区域 网通区域

Proxy Proxy

内网服务器

Squid

Web Srv

Squid

专线专线

检测 Web 服务器状态,自动屏蔽故障 web 服务器

检测 Web 服务器状态,自动屏蔽故障 web 服务器

Proxy 根据 IP 校准表将错误接入的连接重定向到正确区

Proxy 根据 IP 校准表将错误接入的连接重定向到正确区

按来源 IP 返回电信或网通 Proxy 地址

按来源 IP 返回电信或网通 Proxy 地址

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

网络性能优化-静态资源分离

静态资源存储在独立的 RES 服务器上采用 qhttp ,提升负荷能力静态资源通过 CDN进行分布,用户就近访问,提高访问速度。相同文件下载速度从 310ms 提升到 250ms 。

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

网络性能优化-其它方案

基于 CGI 的页面输出,相比 Ajax ,在 QQMAIL 用户模型下获得更优速度,排除了浏览器的性能干扰,且易于监控。缩减链接数静态资源 HTTP ZIP传输

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

目录

QQMAIL 总体架构服务器性能优化网络性能优化代码框架优化

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

代码框架优化- CGI输出

HTTP Server

CGI

XML

模板解析器 Template

HTML

显示 IE浏览器

AJAX引擎

TemplateDOM组合器

显示 IE浏览器

Ajax技术 传统HTML技术

一套CGI同时支持AJAX和传统HTML

技术。

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

代码框架优化- CGI 代码框架

CGI程序从基础 CGI对象继承,提供以下功能:强制的 Session检查机制统一的错误处理( Exception)命令行调试机制XML到 HTML数据格式转换

提升开发效率和安全性

Standard Library

Session校验机制

CGI Framework

自定义处理程序

输出数据格式转换错误标准处理机制

调试机制

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

Q&A