pHP中的循环控制语句,下列说法正确的是?(亿级用户PC主站的PHP7升级实践)PHP函数 / PHP函数在云原生应用中的实践...

wufei123 发布于 2024-05-20 阅读(22)

作者丨侯青龙编辑丨尾尾、Cindy“伴随业务的增长,系统压力也在不断增加,再加上机房机架趋于饱和,无法更加有效应对各种突发事件。在这样的情况下,PC主站升级为PHP 7,有哪些技术细节可以分享?背景

新浪微博在2016年Q2季度公布月活跃用户(MAU)较上年同期增长33%,至2.82亿;日活跃用户(DAU)较上年同期增长36%,至1.26亿,总注册用户达8亿多PC主站作为重要的流量入口,承载部分用户访问和流量落地,其中我们提供的部分服务(如:头条文章)承担全网所有流量。

随着业务的增长,系统压力也在不断的增加峰值时,服务器Hits达10W+,CPU使用率也达到了80%,远超报警阈值另外,当前机房的机架已趋于饱和,遇到突发事件,只能对非核心业务进行降低,挪用这些业务的服务器来进行临时扩容,这种方案只能算是一种临时方案,不能满足长久的业务增长需求。

再加上一年一度的三节(圣诞、元旦、春节),系统需预留一定的冗余来应对,所以当前系统面临的问题非常严峻,解决系统压力的问题也迫在眉急面对当前的问题,我们内部也给出两套解决方案同步进行方案一:申请新机房,资源统一配置,实现弹性扩容。

方案二:对系统进行优化,对性能做进一步提升针对方案一,通过搭建与新机房之间的专线与之打通,高峰时,运用内部自研的混合云DCP平台,对所有资源进行调度管理,实现了真正意义上的弹性扩容目前该方案已经在部分业务灰度运行,随时能对重点业务进行小流量测试。

针对方案二,系统层面,之前做过多次大范围的优化,比如:将Apache升级至Nginx应用框架升级至YafCPU计算密集型的逻辑扩展化弃用smarty并行化调用优化效果非常明显,如果再从系统层面进行优化,性能可提升的空间非常有限。

好在业界传出了两大福音,分别为HHVM和PHP7方案选型

在PHP7还未正式发布时,我们也研究过HHVM(HipHop Virtual Machine),关于HHVM更多细节,这里就不再赘述,可参考官方说明。下面对它提升性能的方式进行一个简单的介绍。

默认情况下,Zend引擎先将PHP源码编译为opcode,然后Zend解析引擎逐条执行这里的opcode码,可以理解成C语言级的函数而HHVM提升性能方式为替代Zend引擎将PHP代码转换成中间字节码(HHVM自己的中间字节码,通常称为中间语言),然后在运行时通过即时(JIT)编译器将这些字节码转换成x64的机器码,类似于Java的JVM。

HHVM为了达到最佳优化效果,需要将PHP的变量类型固定下来,而不是让编译器去猜测Facebook的工程师们就定义一种Hack写法,进而来达到编译器优化的目的,写法类似如下:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻93160