Facebook 的 PHP 性能与扩展性
炙手可热的 Facebook 是用 PHP 开发的。随着一些技术交流,逐渐能看到 Facebook 技术人员分享的经验。近期这个 geekSessions 站点上看到 Facebook 的 Lucas Nealan 分享的文档比较有参考价值。
Cache 为 王
Note:这个层次图画的稍微有点问题,不是严格从上到下的。
The Alternative PHP Cache , APC
Facebook 平均每个用户每天要访问超过 50 个页面,PHP的页面载入时间的优化就比较重要了。在 PHP Cache 层,Facebook 采用了 APC。
Memcached 层
APC Cache 的是非用户相关的信息,而用户相关的数据 Cache 当然是在 Memcached 中。
Facebook 部署了超过 400 台 Memcached 服务器,超过 5TB 的数据在 Memcached 中。这是当前世界上最大的 Memcached 集群了。也给 Memcached 贡献了不少代码,包括 UDP 的支持和性能上的提升(性能提升超过 20%)。
程序 Profiling
Facebook 开发人员大量采用 Callgrind 、APD、 xdebug 、KCachegrind 等工具进行基准性能测试。任何一个 Web 项目,这也是不可或缺,也是比较容易忽略的一环。所有开发人员都应该具备熟练使用这些工具的能力才好。
补充一下:语言的选择
为什么 Facebook 选择 PHP 而不是其他语言? 用Flickr 的 Cal Henderson 这句话就能说明了: "Languages's don't Scale, Architecture Scale"。
从 80-20 的原则看,APC 和 Memcached 是最主要的。在这两个环节上下功夫,受益/开销比要大于另外几个环节。
Facebook 的 PHP 性能与扩展性相关推荐
- linux下webservice压力测试,pylot压力测试支持linux及windowsWebService性能及扩展性的工具.docx...
pylot压力测试支持linux及windowsWebService性能及扩展性的工具 下载以下软件请加群292501151,群共享有如有不便敬请谅解,执行#后面跟着(linux命令行)!普:Pylo ...
- 服务器双路性能提升,性能PK扩展性 入门级双路服务器比拼
[IT168 评测]不久前,英特尔发布了新一代的至强E5v4处理器,又掀起了新一轮的服务器升级浪潮.那么其实对于许多用户来讲,在选购第一台服务器的时候往往有许多的顾虑.究竟是选择性能?还是选择扩展性? ...
- mysql 基于语句的复制_MySQL 复制 - 性能与扩展性的基石 1:概述及其原理
1. 复制概述 MySQL 内置的复制功能是构建基于 MySQL 的大规模.高性能应用的基础,复制解决的基本问题是让一台服务器的数据与其他服务器保持同步.接下来,我们将从复制概述及原理.复制的配置.常 ...
- MySQL 复制 - 性能与扩展性的基石:概述及其原理
1. 复制概述 MySQL 内置的复制功能是构建基于 MySQL 的大规模.高性能应用的基础,复制解决的基本问题是让一台服务器的数据与其他服务器保持同步.接下来,我们将从复制概述及原理.复制的配置.常 ...
- idou老师教你学Istio 04:Istio性能及扩展性介绍
Istio的性能问题一直是国内外相关厂商关注的重点,Istio对于数据面应用请求时延的影响更是备受关注,而以现在Istio官方与相关厂商的性能测试结果来看,四位数的qps显然远远不能满足应用于生产的要 ...
- 对java并发性的理解,【图片】你了解过Java并发编程:性能、扩展性和响应的高端操作吗?【java吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 降低同步代码所带来的效果是可以测量的.在我的机器上,整个程序的执行时间从420ms降低到了370ms.看看吧,仅仅把三行代码移出同步保护块就可以将程序运行 ...
- asp.net的10个提升性能或扩展性的秘密(二)
简介 Asp.net有很多值得你挖掘的"秘密",当你发现了它们,将会给你网站的性能和可扩展性带来巨大提升!例如,对于Membership以及Profile提供程序有一些秘密的瓶颈, ...
- 高性能、高并发、高扩展性和可读性的网络服务器架构:StateThreads
译文在后面:代码我放在GITHUB了:http://github.com/ossrs/state-threads. State Threads for Internet Applications In ...
- 优秀开源项目之三:高性能、高并发、高扩展性和可读性的网络服务器架构State Threads...
译文在后面. State Threads for Internet Applications Introduction State Threads is an application library ...
最新文章
- 揭秘深度学习成功的数学原因:从全局最优性到学习表征不变性
- 一文教你搞定变频器的安装、原理、接线、维护及故障处理
- POJ 1944 Fiber Communications (枚举 + 并查集 OR 线段树)
- 设计师喜欢收集各种各样的笔刷来喽,不必倾家倾产就能像创造出令人惊叹的设计。
- Go语言:内存存储模型(对于可执行程序)
- java中怎么自己画地图_用 4 行代码画一幅中国地图
- 机器人无人车项目开发学习 上下位机软硬结合python jetson nano ros
- 流媒体网络传输的技术瓶颈
- php urldecode 加号,php|urldecode urlencode 的加号问题
- 如何定制zencart模板
- 智能驾驶大数据是什么?传统车企如何升级?
- Java解压压缩加密文件zip
- 微信公众平台 微接口 接口100 API100 接口大全
- Google基本查询语法
- windows已经阻止此软件因为无法验证发行者
- 毕业答辩的PPT攻略
- android 蓝牙串口自动断开,uni-app 蓝牙连接被自动断开问题
- of undifine报错
- Lifecycle的基本使用和原理
- 如何从一个空有上进心的人,变成行动上的巨人?
热门文章
- error: cannot read: aaa.java_Java期末考试习题库[选择题填空题改错题学生].doc
- [Web Chart系列之五] 1. 实战draw2d 之总体介绍
- JavaScript 之call , apply 和prototype 介绍
- 人工智能用python还是java_人工智能选择python还是java语言
- php fopen html,PHP fopen和fwrite函数实现创建html页面_PHP教程
- Java String 常量池理解
- Python的第三方库pyppeteer
- openlayers3 根据经纬度 自动画框_自动驾驶定位为什么少不了惯性导航?
- 揪出数据库中看不见的字符
- oracle unused 语法_Oracle教程之设置为unused 后如何恢复 ?