宋琦:PHP在微博优化中的“大显身手”

2013中国软件开发者大会(以下简称SDCC)于8月30-31日在北京新云南皇冠假日酒店举办。作为CSDN和《程序员》杂志倾力打造、千人规模以上的顶级技术盛会,今年SDCC 2013以“软件定义未来”为主题,来自于国内外一线的技术精英,就大数据分析与BI、架构实践、研发管理、IT基础设施与运维、产品与设计、开放平台等专题和参会者进行了深入的分享和探讨。此外,32小时编程马拉松、CTO论道论坛等量身定制的特色环节也受到了参会者的强烈关注。

31日下午的编程语言与工具专题论坛上,新浪主站架构师宋琦与大家分享和探讨了关于PHP在新浪实际中的应用情况。 

在进入新浪之前,宋琦一直在做商业产品,使用的是传统的LAMP架构。而通常商业产品不涉及到很大流量,只是业务逻辑比较复杂。宋琦说当时他关注的主要是框架、扩展性、安全性方面的话题,对性能关注的较少。“之后选择做,是因为我认为对于程序员来说,产品所带来的技术挑战是一般产品无法比的。在大数据和大访问量下,任何东西都有可能成为非常棘手的问题。”宋琦说。

因为本身的一些特性,使得传统的LAMP架构,传统的框架、模板系统等在中变得不再适用,需要更加深入了解系统底层,才能应对更多挑战。

海量数据不容小觑

宋琦列了一组数据,用户数大约5.5亿,假设每个人有100条关注关系,那么总共就有550亿条用户关系,用两个long也就是16个字节来表示一个关注关系的话,那么单独保存这些关注关系就需要800G的存储空间。“以往在db里用一个map表就解决的事,放在这个场景下就变得可笑了。”宋琦说。

那么的访问量有多大呢?宋琦说,在2013年除夕当晚,蛇年第一秒共发出近35000条,第一分钟发出近73万条。这个只是上行的数据量,而下行的数据量是这个的N倍还多。由此可见,这样的数据量非常惊人。

响应速度关乎用户体验

在如此大的数据量和访问量下,对响应速度的要求非常高。有研究数据显示,如果一个页面响应速度超过3秒,那么57%的用户就会放弃;而在登录某网站时,若超过5秒,74%的用户就不会再登录;亚马逊的主页响应时间每延长1秒,每年就会减少16亿美元的销售额;而Google搜索结果每慢0.4秒,一天搜索量将减少800万次。

“总之,这些数据都说明了响应速度的重要性,可以说响应速度是保障流畅用户体验的基础。我们Team的主要KPI之一就是提升的性能。”宋琦补充道。 

数据加载的优化

宋琦指出,有很多的配置文件,有几十个,这些配置每一次请求都要被加载,都要重新申请内存存放这些配置。而配置文件的修改是非常少的,那么可不可以只加载一次就可以一直使用呢?很遗憾PHP是做不到的,PHP脚本中所申请的资源在请求结束后全都会被释放。“于是我们同样使用PHP扩展来解决了它,我们创建了一个名叫Weibo_Conf的扩展,他在php-fpm启动阶段扫描指定的目录,将其下的.ini文件加载到内存中,每5分钟更新一次。这样服务器每一次接到请求时,不需要重新加载这些配置,而是直接取用,效率提升了不少。”宋琦介绍说。

除了配置外,还有一些需要常驻内存,而且不常变化的东西,但是这些的量更大一些,比如白名单/黑名单,或者切词服务的字典等。这些东西以往都是放在数据库或者MC当中,然后通过http开放接口供远程调用。“因为他们的逻辑都比较简单或者固定,不太常变化,我们将他们独立出来做成单独的C服务,用的是yar的兄弟yar-c,yar-c所做的工作就是提供一个基于C的RPC框架,帮你完成网络和进程方面的管理,让你可以专注于实现业务逻辑,同时更方便的是,通过PHP的yar扩展可以直接调用,也就是说PHP端不论是对于基于yar-c的socket RPC服务还是基于yar的http RPC服务,无需做出改变既可以通用。”宋琦说道。

缓存优化 

众所周知,对于访问量巨大的服务来说,缓存是必不可少的,而是一个重度依赖缓存的应用。宋琦指出,前端展现的数据全部依赖于开放平台,开放平台提供的是基于http的RESTFul的接口,响应速度一般,所以为了提速同时降低对开放平台造成的负载,大量的使用了MC来缓存数据。“但是用MC也不是轻轻松松就能满足我们需要的。我们做个计算,假设我们每台服务器上开启128个php-fpm,总共100台服务器,如果每个请求响应时间是1秒,从请求开始就连接MC并且等到请求结束后才自动释放,那么每一台MC上至少有上万的连接,实际的量比这个还要大的多,这样MC的效率就会慢下来,同时增加了PHP处理请求的耗时,又进一步加剧了连接占用的情况,很容易造成雪崩效应。”宋琦指出。

针对此问题,宋琦展示了两种解决方案:

一种是引入一个proxy来代理对MC的访问,twitter采用的是这种方案,通过代理,php-fpm与proxy、proxy与MC之间都可以维持长连接,并且请求可以在proxy上做合并。twitter开源了他们的这个代理twemproxy。可以看到在加入twemproxy之后,MC集群的连接数大大降低了。 

但是在加入了一层proxy之后,因为要通过一层twemproxy,会使得MC请求的响应变慢,于是采用了另外一个方案:增加一层缓存做成多级缓存。 

首先通过会话保持,让一个用户的每一次访问都落到固定的一台机器上,然后我们在前端机的本地开启一个本地缓存,用它来挡在MC集群之前,降低对MC的访问。这层本地缓存的实际命中率大概在60%~70%左右,这些请求只需要从本地缓存中获取数据,就不需要走网络从MC集群上获取数据。

原文发布时间为:2013-09-07

时间: 2025-01-29 15:35:41

宋琦:PHP在微博优化中的“大显身手”的相关文章

数据分析在微博营销中的应用 怎样评估微博营销的影响

中介交易 SEO诊断 淘宝客 云主机 技术大厅 微博营销的案例有许多,微博营销的概念也有不少,但是微博营销的讨论中很少看到有说服力的证据能够说明微博营销的全貌或特点,更没有把数据分析作为论述的手段或依据.事实上,微博平台很适合进行的数据分析,而且实现的复杂度和成本都不高.本文将对数据分析在微博营销中几个可以使用的方向进行了简单的分析,期望给大家一定的启发和思考.为了能更有效地展开论述,本文中的微博营销仅指在新浪微博上开展普通的市场营销活动. 1.确定目标粉丝 微博营销需要吸引目标用户的主动关注,

HTML标签图片alt在优化中的谨慎使用

图片中故意充斥大量ALT关键词文本不仅无助于网页的搜索引擎排名,反而会因为有ALT关键词垃圾(ALT Text Spam)嫌疑而影响排名成效 在网页设计中,图片的属性ALT标签用于对图片进行命名等描述说明.ALT标签众多关键词信息在搜索引擎优化中曾发挥了一定作用,常被用于增加网页关键词密度,因此在ALT中合理添加与主题有关的关键词属于搜索引擎优化中考虑的一个因素.不过,最近美国SEO研究网站WebMarketingNow和Search Engine Academy根据长期测试研究认为,目前,三大

TAG标签在SEO优化中的作用

1.TAG标签是什么 很多人还不了解沈阳SEO优化中TAG标签具体是什么东西,对网站沈阳SEO优化又会带来什么样的影响,首先我网站用的CMS里面已经有了添加TAG标签的功能,但是沈阳SEO优化一直以来应用的并不是十分充分,有的时候是空着,有的时候就直接写关键词,这对于一个健康的网站沈阳SEO优化来说也许是不会带来什么fu/mian的影响的,那么这个TAG标签究竟有什么作用呢? TAG标签与关键词有着同样的重要的地位,我认为关键词是写给搜索引擎看的,而TAG标签针对的却是用户,是直接的浏览者.很多

网站优化中如何写出满足用户需求的文章

笔者一直从事的资讯类小企业网站的运维和优化过程,尤其随着百度算法的升级,越发感觉到优质的站内文章对于seo的重要性,作为一个seoer笔者认为文章的撰写一定是和用户需求和体验挂钩的,你的内容能获得多少客户的关注,就能提升网站多大的粘度,这两者是成正比的,一个资讯类网站,如何让文章质量更有价值和说服力,笔者认为以下几个方面值得我们任何一个站长的思考,好了下面笔者以自己网站为案例进行详细分析. 第一,撰写之前如何有效挖掘用户需求.笔者非常喜欢进行数据统计工作,我们先来看图, 以上图示内容展示的是百度

浅谈在网站优化中如何提升外链质量

在网站优化过程中,影响因素除了内链和原创内容外,外链也是影响站外SEO成功与否的关键.外链优化不是指要无限的增加外链数量,而是要比较注重它的品质.只有这类外链才会对网站优化权重会起一定的辅助性作用,下面就由星梦网络来谈下在网站优化中如何提升外链质量. 网站外链需要多样性 在进行站外优化中,增长外链不要知道它的数量外而忽略了它的多样性.在网站优化中,我们要不断收集各行各业的网站外链资源,也可以在这些不同的外链资源中留下文本链接,而且最好是文本超链接.虽然现在有许多可以带外链的网站,但是在有些网站中

浅谈在网站优化中获取高质量外链有哪些渠道

在网站优化过程过,有一个是比较让一些站长头疼的事,那就是寻找网站外链的渠道.有的网站可以让我们带外链但是JS形式,有的网站可以带超链接的但里面却加了nofollow标签,这些外链资源加了也等于没有加.那么我们在网站优化中,到底获取高质量外链有哪些渠道呢? 新闻源媒体 其实现在在网上有许多可以投稿的高权重新闻媒体,这些网站除了有比较高的人气和流量外,而且你所投的稿子被第三方网站转载的频率是相当高的,前提是你的稿子质量和相关性都比较好,这样带来的效果也是比较不错的. 如果是比较有实力的站长,你也可以

URL优化中6个需要注意的事项

在网站的优化中,URL的优化是大家经常的忽视的一个方面,但是URL的优化也同样是非常重要的,这里就和大家谈谈我是怎么处理这些问题的,希望这些经验对大家有所帮助! 1:域名的选择 不要为了让域名中出现关键词而全拼域名,这样我们的域名就显得非常的长了,也不要为了放关键词,注册带有连词符的域名. 2:文件夹命名 整个URL包括域名,文件名,用网站合适的关键词,尤其是文件名.让浏览者一看到看到URL,就可以大致了解这个网页是什么内容,Z-BLOG在这一点就做的非常的好,我搜索我自己博客的关键词,发现在U

网站优化中三大SEO要素

SEO是一门入门简单,但是无法完全琢磨透的技术,任何一个SEO高手只能做到无限接近搜索引擎的算法,而永远不可能掌握搜索引擎的算法.它主要研究的是搜索引擎页面上的自然排名部分,即页面的左侧部分,一般来说与付费广告(PPC)没有直接关系.SEO优化对于网站来说主要可以分成站内优化以及站外优化两部分,这里主要讲在站内.站外优化中较为重要的网页标题的编写.正文中关键词的分布以及如何做外部链接. 标题 网页标题指的是包含在title标签内的文字,是用户在使用搜索引擎时直接看到的内容,可以说是网页优化最重要

关于网站优化中酒与污水定律的几点思考

在管理学上有一个比较有趣的定律--酒与污水定律,它是指把一匙酒倒进一桶污水,得到的是一桶污水;如果把一匙污水倒进一桶酒,得到的还是一桶污水.所以,显而易见,污水和酒的比例并不能决定这桶东西的性质,真正起决定作用的就是那一勺污水,只要有它,再多的酒都成了污水. 在任何组织里,几乎都存在几个难弄的人物,他们存在的目的似乎就是为了把事情搞糟.最糟糕的是,他们像果箱里的烂苹果,如果不及时处理,它会迅速传染,把果箱里其他苹果也弄烂.烂苹果的可怕之处,在于它那惊人的破坏力.一个正直能干的人进入一个混乱的部门