Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
百度贴吧服务端性能优化实践
Search
Reeze Xia
August 13, 2014
Technology
1.8k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
百度贴吧服务端性能优化实践
Reeze Xia
August 13, 2014
More Decks by Reeze Xia
See All by Reeze Xia
HHVM: A High Performance PHP Engine
reeze
3
140
百度贴吧HHVM应用实践
reeze
6
1.3k
百度贴吧LAMP架构
reeze
1
1.4k
Other Decks in Technology
See All in Technology
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
160
ルールやカスタム機能、どう活かす?ハンズオンで体感するIBM Bobの出力コントロール
muehara
1
150
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
470
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
670
フロンティアAIのゲート化と地政学リスク
nagatsu
0
130
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
280
人材育成分科会.pdf
_awache
3
210
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
6
5k
【NRUG vol.18】なぜ多くのオブザーバビリティ導入は失敗するのか
nrug_member
0
120
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
120
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
190
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
580
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Designing for humans not robots
tammielis
254
26k
Design in an AI World
tapps
1
240
Code Review Best Practice
trishagee
74
20k
Music & Morning Musume
bryan
47
7.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
610
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Tell your own story through comics
letsgokoyo
1
950
The Spectacular Lies of Maps
axbom
PRO
1
800
Transcript
百度贴吧服务端性能优化实践 夏绪宏
[email protected]
Web性能⼤大会 2014
About Me • 夏绪宏 • 百度贴吧:LAMP技术负责⼈人 • Weibo: @reeze •
http://github.com/reeze • Email:
[email protected]
Agenda 1. 性能优化简介 2. 贴吧服务端性能优化实践 3. 总结展望
Web Performance Matters TM
Performance is a Feature ” “ — Jeff Atwood
optimize to make sth as good as it can be.
['ɑptɪ.maɪz] v.
Web performance optimization Achieve better performance with limited resources by
doing less, do it faster, correctly. Better: faster, less resource consumption.
Web performance optimization All about Trade off. ! Most of
the time, you can’t get them all.
运⾏行效率 开发效率 运维效率 理想:Get them all. 现实:很难全局最优,Make your choice. 其他变量:资源成本,技术选型等
全局视⾓角,并⾮非只有运⾏行效率
Photo credit: 《High Performance Browser Networking》 Latency and Bandwidth 我们的优化重点
Server Lantency
优化⺫⽬目标 • ⽤用户体验:降低响应时间 • 节省资源:提⾼高吞吐,充分利⽤用资源
系统化视⾓角 • 性能问题从哪⾥里来? • 性能问题怎么定位? • 怎么发现性能衰减?事前、事后
系统化视⾓角 • 性能问题哪⾥里来? • 设计阶段:架构问题 • 开发阶段:实现问题 • 在线运⾏行:⼦子模块故障,流量上涨等 !
• 动态问题:随时间变化
层次化视⾓角 • 业务层 • 代码逻辑 • 算法层次 • 基础层 •
运⾏行层、交互层 • 系统层次 Nginx接⼊入 业务层 运⾏行层: PHP、Nginx MySQL/Cache/等 RPC交互层 操作系统/⺴⽹网络
怎么定位性能问题 • PIaaB: Performance Issue as a Bug :) !
! !
怎么定位性能问题 • Toolbox • xhprof、valgrind-callgrind、gperftools • jemalloc、HHVM AdminServer • systemtap…
etc… • 业务性能监控平台
百度贴吧 • 最⼤大的中⽂文社区 ! • 百亿级流量 • 业务增⻓长⻜飞速,规模⼤大:100+⼦子模块 • 业务120+
上线/天
贴吧层次架构 # %$! " # Nginx
%$! %$! %$! %$! %$! %$! %$! %$! " %$! %$! %$! %$! %$! %$! %$!
Nginx优化 • Nginx Cache • 内部数据接⼝口缓存 • 及早返回,提升响应速度 • 线上Cache命中率:
60% • 在适⽤用的场景使⽤用cache Cache DB
Nginx优化 • 内部调⽤用使⽤用⻓长连接 • 跨机房请求 ~ 2ms左右,同机房1ms以内 • 使⽤用⻓长连接避免连接性能损失 •
级联效应 Nginx接⼊入 RPC
业务优化 • 并⾏行化 • 后端调⽤用串⾏行变并⾏行 • 最理想情况下: 185ms -> 63ms
Nginx 业务层 RPC
业务优化 • 并⾏行的⽭矛盾:开发效率与效率的⽭矛盾 • 业务依赖关系,⽆无法全并⾏行 • 模块化设计:可并⾏行的难以并⾏行 • ⾃自动化并⾏行:开发效率⽆无法满⾜足 Nginx
业务层 RPC
业务优化-代码及逻辑优化 • 代码优化: • 使⽤用本地apc cache缓存配置 • 批量获取数据 • 业务逻辑优化
• ⽇日志打印优化 • etc… Nginx 业务层 RPC
业务优化-代码及逻辑优化 • 前端模板性能优化 • CPU密集型 • ⻚页⾯面性能瓶颈 Nginx 业务层 RPC
业务优化-代码及逻辑优化 • 热点函数函数扩展实现 • 性能提升17% • 响应时间降低 32.5%
业务优化-代码及逻辑优化 • Spider优化: • 帖⼦子⻚页 21%来⾃自爬⾍虫 • 针对Spider提供简版⻚页⾯面:平均响应时间下降11% • 带宽优化
• 使⽤用CDN,缩⼩小⻚页⾯面体积 • 节省 35% Nginx 业务层 RPC
RPC优化 • 700+后端配置 • 配置⽂文件⼤大⼩小:~ 5M • 变动频繁 ! •
实时加载配置不可⾏行,热加载 Nginx RPC交互层
RPC优化 • 避免重复加载 • PHP⽆无状态怎么办? • 扩展实现 • 独⽴立进程更新配置 RPC中间件V1
RPC优化 • 使⽤用共享内存 • 使⽤用更快的序列化格式 RPC中间件V2
RPC优化 ! ! ! ! • 使⽤用更快的序列化格式:msgpack > php serialize
> json 序列化(s) case1 case2 case3 case4 case5 PHP 0.216778 0.217359 0.253435 0.162621 0.214441 JSON 0.249784 0.205442 0.325695 0.124034 0.384287 Msgpack 0.218894 0.212432 0.250249 0.048074 0.096459
RPC优化 • 整体性能提升:24.6% ! • 其他尝试思路: • 更短的调⽤用路径,减少架构层次 • 内部使⽤用更⾼高效的协议,⽽而不是HTTP等
更快的PHP • 另⼀一个PHP实现:HHVM (HipHop PHP Virtual Machine) • Facebook开源项⺫⽬目 http://github.com/facebook/hhvm
• 解决PHP运⾏行效率问题 • 开发速度和效率兼得 Nginx 运⾏行层 RPC
更快的PHP %$" %$" #! %$"
更快的PHP • 我们的业务测试结果 ! ! ! !
为什么会快 • 类型推导 • JIT • 多级优化
真实业务数据
真实业务数据 • 响应时间下降:126ms • 平均提升:27%
进展 • 完成绝⼤大多数在线应⽤用的迁移 • 核⼼心服务性能提升平均40%+ ! • Conclusion: 尤其适合计算密集型业务
系统化思路 • 防治:线下性能监控 • 监控:线上性能监控 • 定位:性能问题分析 षؿ ҩ൫ ഈཌ
ᄎྛ ࡓ॥
系统化思路 • 防治:线下性能监控平台 • 业务拓扑关系复杂 • 线上线下环境差异⼤大 • 难以获得真实数据 •
难以⾃自动化
性能问题早发现 • 在线性能监控平台 • 性能变化早知道 • 和上线时间点关联 • 调⽤用拓扑关系
总结和展望 • 性能优化是个迭代过程 • 全局思考、有所取舍 ! • 提升在线性能问题定位效率 • 探索线下性能衰减发现有效⼿手段
• 全局优化:不⽌止Server端,底层操作系统,⺴⽹网络等。
Thank you