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
5
1.7k
百度贴吧服务端性能优化实践
Reeze Xia
August 13, 2014
Tweet
Share
More Decks by Reeze Xia
See All by Reeze Xia
HHVM: A High Performance PHP Engine
reeze
3
130
百度贴吧HHVM应用实践
reeze
6
1.3k
百度贴吧LAMP架构
reeze
1
1.3k
Other Decks in Technology
See All in Technology
ニッポンの人に知ってもらいたいGISスポット
sakaik
0
170
ローカルLLMとLINE Botの組み合わせ その2(EVO-X2でgpt-oss-120bを利用) / LINE DC Generative AI Meetup #7
you
PRO
0
100
やる気のない自分との向き合い方/How to Deal with Your Unmotivated Self
sanogemaru
1
530
なぜAWSを活かしきれないのか?技術と組織への処方箋
nrinetcom
PRO
5
1k
HonoとJSXを使って管理画面をサクッと型安全に作ろう
diggymo
0
130
[VPoE Global Summit] サービスレベル目標による信頼性への投資最適化
satos
0
140
ソースを読むプロセスの例
sat
PRO
15
9.4k
初めてのDatabricks Apps開発
taka_aki
1
200
Copilot Studio ハンズオン - 生成オーケストレーションモード
tomoyasasakimskk
0
150
LLMアプリの地上戦開発計画と運用実践 / 2025.10.15 GPU UNITE 2025
smiyawaki0820
1
670
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
570
OpenTelemetry が拡げる Gemini CLI の可観測性
phaya72
2
530
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
A designer walks into a library…
pauljervisheath
209
24k
The Straight Up "How To Draw Better" Workshop
denniskardys
238
140k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
910
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Context Engineering - Making Every Token Count
addyosmani
7
270
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