首页 > 编程语言 >Facebook 的 PHP 性能与扩展性

Facebook 的 PHP 性能与扩展性

时间:2022-11-11 21:09:59浏览次数:71  
标签:Nealan Cache 扩展性 Facebook APC PHP Memcached



炙手可热的 Facebook 是用 PHP 开发的。随着一些技术交流,逐渐能看到 Facebook 技术人员分享的经验。近期这个 ​​geekSessions​​ 站点上看到 Facebook 的 Lucas Nealan 分享的文档比较有参考价值。

Cache 为 王


任何一个成功的站点都有一套最合适自己的 Cache 策略。

Note:这个层次图画的稍微有点问题,不是严格从上到下的。

The Alternative

PHP Cache , APC

Facebook 平均每个用户每天要访问超过 50 个页面,PHP的页面载入时间的优化就比较重要了。在 PHP Cache 层,Facebook 采用了 ​​APC​​。

Lucas Nealan 的 PPT

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 是最主要的。在这两个环节上下功夫,受益/开销比要大于另外几个环节。

(上面的图是从 Lucas Nealan 的文档截的,版权所有是他的)

–EOF–


标签:Nealan,Cache,扩展性,Facebook,APC,PHP,Memcached
From: https://blog.51cto.com/u_2776699/5845312

相关文章

  • phper 的鼓励  microsoft 牵手php
    ​​美国​​旧金山当地时间本周二,微软和开放源代码软件厂商Zend宣布,二家公司已经结成长期的合作伙伴关系。 微软的技术战略家希尔夫说,与Zend的合作将是为期多......
  • 在CakePHP中使用TinyMCE编辑器【转】
    ​​TinyMCEEditor​​​小巧实用,是网页文章编辑器之首先,最近在用CakePHP做一个小项目正好用到,记录一下。首先下载​​​TinyMCE​​,并把压缩包内tinymce/jscripts/tiny......
  • php 上传图片 报500 解决方案
    首先排查php文件配置是否正确,网上有很多都是这种文章,这里不赘述。分享下我的情况,php配置文件里的upload_tmp_dir若未指定目录,那么默认的临时存放目录是C:\Windows\Temp,我......
  • PHP环境搭建
    php环境搭建需要的工具:Apache、php、mysql目录:一、Apache获取压缩包配置Apache安装二、Php获取压缩包:配置Php三、在Apache中导入Php模块四、安装Mysql序......
  • PHP sprintf函数 bug
    sprintf()定义和用法format参数可能的格式值:%%-返回一个百分号%%b-二进制数%c-ASCII值对应的字符%d-包含正负号的十进制数(负数、0、正数)%e-使用小写的......
  • Facebook广告投放技巧
    随着脸书广告的竞争越来越激烈,脸书广告越来越难获得高投资回报。这是一个潜在的问题,因为CPM每增加1%,ROI就会减少1%。在这种情况下,广告商可能需要修改他们的内容或整体营销策......
  • php实现单链表
    今天记录下使用php实现单向链表的功能操作先创建一个节点类用来生成节点对象<?phpclassnode{public$name=null;public$no=null;public$next=......
  • PHP垃圾回收机制
    PHP5.3的新的垃圾回收机制(也就是GC)的特点。 引用计数基本知识每个php变量存在一个叫"zval"的变量容器中。一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信......
  • PHP中获取不到自定义header参数解决方案
    一、概述今天在通过PHP中获取自定义header参数时候,一直获取不到。比如,获取header中USER_NAME参数,如下:123$curUser = isset($_SERVER['USER_NAME']) ? $_SERVER['USE......
  • PHP构造验证码
    代码如下:<?phpheader('Content-type:image/jpeg');$width=120;$height=40;$element=array('a','b','c','d','e','f','g','h','i','j','k','m......