Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
百度贴吧服务端性能优化实践
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
150
百度贴吧HHVM应用实践
reeze
6
1.3k
百度贴吧LAMP架构
reeze
1
1.4k
Other Decks in Technology
See All in Technology
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
1
500
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
1
580
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
32
32k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
250
Lambda MicroVMsは常駐サーバーの代わりに なるか? Kiro Crew を動かして検証してみた / Kiro Crew on Lambda MicroVMs
k_adachi_01
2
220
地方移住と都心キャリアの両立は「金・時間・人」のリソースをフル活用すれば実現できる!〜Snowflake女子会 vol.8
snowwmn0824
0
120
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
310
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
800
Why Agent Cost Needs Observability
nttcom
0
170
JSONataとAWS Step Functionsで目指すRuntimelessな世界
mu7889yoon
1
510
AWS FinOps Agent 結局何が得意なの?
siromi
0
170
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
540
Utilizing Notion as your number one productivity tool
mfonobong
4
600
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
The Language of Interfaces
destraynor
162
27k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
550
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Chasing Engaging Ingredients in Design
codingconduct
0
340
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
250
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