你能否正在开发或托管PHP使用顺序?在演进过程当中你能否也在做功能反省?没有?还没有?那顿时Start一次疾速反省吧。它只需求15分钟但很值得。作为一位开发者你要晋升你的代码,并且要有人担任构建可以主动履行这些反省以进步质量门坎的管道。经过一个PHP的托管公司/组织,你可以优化你的安排,运转更多的使用并在异样的根底设备跑更多的负载。
就像Java、.NET和Ruby等类型的使用。最影响功能的瓶颈很轻易被发明和修复,如许可以晋升终端用户的功能并节俭Server的动力。
下面是我们运用dynaTrace的15天收费试用剖析我们基于Moodle的教导平台时所发明的:
较长的PHP编译工夫: 我们的使用花了高达66%的工夫再编译上
低劣的数据库拜访形式: 我们的一些web恳求要履行高达592个SQL恳求
低效的PHP编码: 将HTML衬着成终极页面破费了5s+
假如你对进修PHP的功能的更多内容感兴味必定要看一下这些文章:PHP功能的根本要点(Google Dev)和进步PHP功能的5件事(DZone)。
在规范装置的PHP中每一个被PHP引擎处置的Web恳求都要被编译。而编译后的代码不会被缓存,这意味着当下个恳求到来时需求从头编译类似的PHP代码。在我们的系统中我们看到,编译工夫占总履行工夫的比例高达66%:
大量的恳求破费了大量工夫编来编译庞杂的PHP文件。优化这些文件将进步全体的呼应工夫。
它还供给了PHP编译工夫的长久剖析。在我们的例子中我们留意到一个新安排使编译工夫增加了两倍。具有如许洞察力可以让你反省代码的变更,并想到运用PHP减速器来使用PHP编译缓存。
PHP监测预警旌旗灯号:四月3号一个安排的变卦招致了负载的进步并使PHP编译工夫增加了一倍。
要害要点
开发者: 经过剖析PHP代码的编译工夫在早期定位庞杂的代码
测试职员: 察看PHP编译工夫的变更来提早构建回归测试
操作者: 运用PHP减速器作为PHP设置装备摆设的一部分以晋升PHP的全体功能
低劣的数据库拜访形式是我们在写博客时的一个常用主题,其首要集中在Java和.NET企业使用中。看一下数据库拜访形式纵观或许什么时候真正归罪于数据库。
PHP使用面对异样的问题。防备N+1查讯问题;在每一个恳求中履行屡次类似的SQL,或许不运用单条优化过的SELECT语句而运用多条SQL来恳求数据:
在SQL中不运用适宜的IN指令而是履行数百次分歧的WHERE子句,形成不用要的数据库拜访。
履行类似的SQL多达95次!以工夫标记来缓存数据而不是一遍又一各处恳求数据库。
为了在生产情况中疾速的发明有问题的拜访形式,需求监督数据库履行的次数,并比拟恳求的交易数和总的数据库工夫,以下图所示:
在生产情况中,你不盼望屡次看到数据库履行次数和工夫的峰值和以后的负载是不相干的。这将显示出一个数据驱动的功能或架构问题。
要害点
开发者 剖析在你的代码和第三方库中的代码是真正被履行的
数据库工程师 察看PHP中履行的SQL语句,并坐下来和开发工程师一同优化他们代码中的SQL语句。为SQL代码或许存储进程供给指点,而不是让他们履行上百次的SELECT查询
测试工程师 在履行压力测试时,察看和数据库拜访形式相干的负载。哪些“静态”数据老是被查询,在使用中缓存这些数据能否更好?
操作职员 检测SQL履行的峰值能否和数据驱动的问题相干,例如用户履行了一个十分奇异的查询,形成了太多的SQL查询
最少我们监测本人的使用时发明,HTML内容的衬着是一个大的功能瓶颈。检查PHP履行工夫可以发明几个在衬着特定页面时履行工夫很长的办法。
剖析破费CPU最多的办法,并优化这些办法将进步全部终端用户的呼应工夫。
假如你发明了一个办法或许PHP文件,确保你也反省了履行工夫的变更。假如你发明了一个很大的差别,极可能发明了一个数据驱动的功能问题,例如衬着一个很大的后果集和一个很小的后果集时,比拟工夫差别。在我们的用例中,曾经在我们的很多课程中注销了的用户会破费更多的衬着工夫,由于很多的页面供给了一切课程的概述。如今的问题是,我们能否老是需求衬着完好的列表。
在生产情况中,你应当老是察看负载对呼应工夫的影响。下面的图片准确的比拟了负载和呼应工夫的关系:
比拟负载和呼应工夫可让你大致了解你的使用顺序做的有多好。留意峰值对负载行动的改动和对呼应工夫的影响。
要害要点
开发职员 在开发时,存眷你的代码。思索你如何衬着你的HTML页面,能否在每一个页面上输出一切的数据
测试职员 必定要测试一切分歧的数据数据(搜刮前提,...),和分歧类型用户在顺序中显示的分歧类型的数据
操作职员 在页面加载时,存眷办法热门。当你发明履行工夫有很大变更时,清查有问题的输出,并告诉开发职员
盼望我启示了你想去优化你在你本人的机械,测试主机或托管主机上树立的使用顺序。假如你有问题,可以在我们的自在试用社区论坛问我们 ,或许在这个博客里宣布评论。我们的另外一位专家或我自己会很快与您联络!
开发者们:留意这些热门。我敢一定,你会发明一些可以消弭的SQL查询,或许可以在编译和履行两方面的工夫上优化编码的查询。
测试者们: 用它来发明你要测试的分歧编译后果之间加载和检测回归剖析时所发作的热门。分享开发职员的技术洞察力。
操作者们:假如你发明了热门,与开发者或想要你运用收费的“同享会话”托管他们的PHP使用顺序的客户相同,他们就可以够剖析息争决问题。他们的使用顺序优化后将减少您的硬件需求,或答应你在类似的根底设备上托管更多的使用顺序。
你的保送管道Delivery Pipeline:一切这些步调可以主动化,因而很轻易集成在你树立的管道中作为一个额定的质量网关。假如你想了解更多,请检查 DevOps的使用功能治理 和 对你的管道实行软件质量怀抱
本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务