• Like
腾讯大讲堂06 qq邮箱性能优化
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

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

  • 505 views
Published

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

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

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
505
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
24
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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