SlideShare ist ein Scribd-Unternehmen logo
1 von 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管理数据块。
服务器性能优化-桶文件结构

                                             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>
服务器性能优化-桶文件结构-可扩展结构


                   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
服务器性能优化-效果


         单机性能: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
服务器性能优化


  Anything else?
服务器性能优化-性能监控


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


  后台服务器跟踪
    访问接口
    关键调用
  CGI性能跟踪
    CGI整体运行时间
    后台接口调用时间
  每日邮件自动报警
服务器性能优化-监控图表
服务器性能优化-小技巧


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


     QQMAIL总体架构
     服务器性能优化
     网络性能优化
     代码框架优化
网络性能优化-数据采集-JS上报


  JS上报:收集的数据包含了页面下载延时和浏览器运算时间,
  能够真实反映用户访问速度。
网络性能优化-数据采集
网络性能优化-设定目标


  登录平均时间控制在8秒以内(国内最快的邮箱)
  着重优化登录时间超过30秒的慢速用户
网络性能优化-Squid代理方案

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



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



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




     北京、天津、广州等6个IDC部署Squid代理,超过30s的用户比例从4%下
     降到3%。
网络性能优化-静态资源分离


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


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


     QQMAIL总体架构
     服务器性能优化
     网络性能优化
     代码框架优化
代码框架优化-CGI输出
    Ajax技术                                传统HTML技术

         显示      IE浏览器
                                            显示       IE浏览器



     DOM组合器      Template

                                            HTML

        AJAX引擎
                                           模板解析器        Template



                               XML
  一套CGI同时支持
  AJAX和传统HTML
  技术。                           CGI

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


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

  提升开发效率和安全性              错误标准处理机制       输出数据格式转换

                                  自定义处理程序




                               Standard Library
Q&A

Weitere ähnliche Inhalte

Andere mochten auch

Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发topgeek
 
百姓网的网速优化之路
百姓网的网速优化之路百姓网的网速优化之路
百姓网的网速优化之路topgeek
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站topgeek
 
腾讯大讲堂38 oracle基础体系结构及性能优化
腾讯大讲堂38 oracle基础体系结构及性能优化腾讯大讲堂38 oracle基础体系结构及性能优化
腾讯大讲堂38 oracle基础体系结构及性能优化topgeek
 
腾讯大讲堂46 自由cgi之路v3
腾讯大讲堂46 自由cgi之路v3腾讯大讲堂46 自由cgi之路v3
腾讯大讲堂46 自由cgi之路v3topgeek
 
Adventures in Livestreaming
Adventures in LivestreamingAdventures in Livestreaming
Adventures in LivestreamingLori Packer
 

Andere mochten auch (6)

Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发
 
百姓网的网速优化之路
百姓网的网速优化之路百姓网的网速优化之路
百姓网的网速优化之路
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站
 
腾讯大讲堂38 oracle基础体系结构及性能优化
腾讯大讲堂38 oracle基础体系结构及性能优化腾讯大讲堂38 oracle基础体系结构及性能优化
腾讯大讲堂38 oracle基础体系结构及性能优化
 
腾讯大讲堂46 自由cgi之路v3
腾讯大讲堂46 自由cgi之路v3腾讯大讲堂46 自由cgi之路v3
腾讯大讲堂46 自由cgi之路v3
 
Adventures in Livestreaming
Adventures in LivestreamingAdventures in Livestreaming
Adventures in Livestreaming
 

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

阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化colderboy17
 
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化guiyingshenxia
 
基于Innodb开发的最佳实践
基于Innodb开发的最佳实践基于Innodb开发的最佳实践
基于Innodb开发的最佳实践wubx
 
百度分布式数据实践与进展
百度分布式数据实践与进展百度分布式数据实践与进展
百度分布式数据实践与进展yp_fangdong
 
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队煜林 车
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)ykdsg
 
我对后端优化的一点想法
我对后端优化的一点想法我对后端优化的一点想法
我对后端优化的一点想法mysqlops
 
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江thinkinlamp
 
2011 06-12-lamp-mysql
2011 06-12-lamp-mysql2011 06-12-lamp-mysql
2011 06-12-lamp-mysqlpwesh
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08drewz lin
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUGYingSiang Geng
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展Sky Jian
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmarkLouis liu
 
Elastic Stack 最新动态
Elastic Stack 最新动态Elastic Stack 最新动态
Elastic Stack 最新动态Elasticsearch
 
Baidu LSP and DISQL for Log Analysis
Baidu LSP and DISQL for Log AnalysisBaidu LSP and DISQL for Log Analysis
Baidu LSP and DISQL for Log AnalysisXiaoming Chen
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎frogd
 
1.4亿在线背后的故事
1.4亿在线背后的故事1.4亿在线背后的故事
1.4亿在线背后的故事llkk0914
 
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)frogd
 
Pptv lb日志实时分析平台
Pptv lb日志实时分析平台Pptv lb日志实时分析平台
Pptv lb日志实时分析平台drewz lin
 

Ähnlich wie 腾讯大讲堂06 qq邮箱性能优化 (20)

阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化
 
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化
 
基于Innodb开发的最佳实践
基于Innodb开发的最佳实践基于Innodb开发的最佳实践
基于Innodb开发的最佳实践
 
百度分布式数据实践与进展
百度分布式数据实践与进展百度分布式数据实践与进展
百度分布式数据实践与进展
 
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
第三届阿里中间件性能挑战赛季军答辩ppt - rapids团队
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
 
Cdc@ganji.com
Cdc@ganji.comCdc@ganji.com
Cdc@ganji.com
 
我对后端优化的一点想法
我对后端优化的一点想法我对后端优化的一点想法
我对后端优化的一点想法
 
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江
 
2011 06-12-lamp-mysql
2011 06-12-lamp-mysql2011 06-12-lamp-mysql
2011 06-12-lamp-mysql
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmark
 
Elastic Stack 最新动态
Elastic Stack 最新动态Elastic Stack 最新动态
Elastic Stack 最新动态
 
Baidu LSP and DISQL for Log Analysis
Baidu LSP and DISQL for Log AnalysisBaidu LSP and DISQL for Log Analysis
Baidu LSP and DISQL for Log Analysis
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
 
1.4亿在线背后的故事
1.4亿在线背后的故事1.4亿在线背后的故事
1.4亿在线背后的故事
 
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)
 
Pptv lb日志实时分析平台
Pptv lb日志实时分析平台Pptv lb日志实时分析平台
Pptv lb日志实时分析平台
 

Mehr von topgeek

明洪涛 个性化推荐系统@土豆
明洪涛 个性化推荐系统@土豆明洪涛 个性化推荐系统@土豆
明洪涛 个性化推荐系统@土豆topgeek
 
项亮 推荐系统实践 从入门到精通
项亮 推荐系统实践 从入门到精通 项亮 推荐系统实践 从入门到精通
项亮 推荐系统实践 从入门到精通 topgeek
 
空望 推荐系统@淘宝
空望 推荐系统@淘宝空望 推荐系统@淘宝
空望 推荐系统@淘宝topgeek
 
从长津湖战役看团队建设
从长津湖战役看团队建设从长津湖战役看团队建设
从长津湖战役看团队建设topgeek
 
Agile changes in liba
Agile changes in libaAgile changes in liba
Agile changes in libatopgeek
 
I hate unit test
I hate unit testI hate unit test
I hate unit testtopgeek
 
Ruby agile development_of_game_operation_platform
Ruby agile development_of_game_operation_platformRuby agile development_of_game_operation_platform
Ruby agile development_of_game_operation_platformtopgeek
 
图形组件技术杂谈
图形组件技术杂谈图形组件技术杂谈
图形组件技术杂谈topgeek
 
腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析topgeek
 
腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析topgeek
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttctopgeek
 
腾讯大讲堂26 带宽优化之道
腾讯大讲堂26 带宽优化之道腾讯大讲堂26 带宽优化之道
腾讯大讲堂26 带宽优化之道topgeek
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍topgeek
 
腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程topgeek
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向topgeek
 
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)topgeek
 
腾讯大讲堂13 soso访问速度优化
腾讯大讲堂13 soso访问速度优化腾讯大讲堂13 soso访问速度优化
腾讯大讲堂13 soso访问速度优化topgeek
 
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨topgeek
 
腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道topgeek
 

Mehr von topgeek (19)

明洪涛 个性化推荐系统@土豆
明洪涛 个性化推荐系统@土豆明洪涛 个性化推荐系统@土豆
明洪涛 个性化推荐系统@土豆
 
项亮 推荐系统实践 从入门到精通
项亮 推荐系统实践 从入门到精通 项亮 推荐系统实践 从入门到精通
项亮 推荐系统实践 从入门到精通
 
空望 推荐系统@淘宝
空望 推荐系统@淘宝空望 推荐系统@淘宝
空望 推荐系统@淘宝
 
从长津湖战役看团队建设
从长津湖战役看团队建设从长津湖战役看团队建设
从长津湖战役看团队建设
 
Agile changes in liba
Agile changes in libaAgile changes in liba
Agile changes in liba
 
I hate unit test
I hate unit testI hate unit test
I hate unit test
 
Ruby agile development_of_game_operation_platform
Ruby agile development_of_game_operation_platformRuby agile development_of_game_operation_platform
Ruby agile development_of_game_operation_platform
 
图形组件技术杂谈
图形组件技术杂谈图形组件技术杂谈
图形组件技术杂谈
 
腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析
 
腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
 
腾讯大讲堂26 带宽优化之道
腾讯大讲堂26 带宽优化之道腾讯大讲堂26 带宽优化之道
腾讯大讲堂26 带宽优化之道
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍
 
腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向
 
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
 
腾讯大讲堂13 soso访问速度优化
腾讯大讲堂13 soso访问速度优化腾讯大讲堂13 soso访问速度优化
腾讯大讲堂13 soso访问速度优化
 
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨
 
腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道
 

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