当前位置: 首页 > 后端技术 > PHP

gRPCPHP和GO数据增长性能测试分析

时间:2023-03-29 21:51:42 PHP

前言大家好,我是CrazyCodes,最近研究PHP请求走gRPC,PHP请求走HTTP。根据数据量的不断增长,平均响应会有多少时间差。一致性声明测试报告全部来自开发机测试,没有任何配置更改。本机配置3GHz六核IntelCorei516GB2400MHzDDR4MacOsGo启动HTTPhttp.ListenAndServePHP启动HTTPphp-S127.0.0.1:8088Abab-c200-n200-k测试数据显示Go,作为服务器,直接遍历测试数据,没有任何其他冗余操作//Pseudo-codefori:=0;我<2,20,200,2000,5000;i++{}GPH[number]下面其他说明,代表gRPC+PHP+HTTP+数据量GPH2返回的数据集大小相同。gRPCDocumentLength≈87bytesHttpDocumentLength≈315bytesGoGrpc->GoGrpc平均响应时间为66.215msPhpGrpc->GoGrpc平均响应时间为190.551msPhpHttp->GoHttp平均响应时间为120.692msGPH20返回数据设置大小为同样的gRPCDocumentLength≈556bytesHttpDocumentLength≈2198bytesGoGrpc->GoGrpc平均响应时间为71.525msPhpGrpc->GoGrpc平均响应时间为212.019msPhpHttp->GoHttp平均响应时间为138.332msGPH200返回数据集大小一致gRPCDocumentLength≈5527bytesHttpDocumentLength≈21199bytesGoGrpc->GoGrpc平均响应时间为93.963msPhpGrpc->GoGrpc平均响应时间为250.104msPhpHttp->GoHttp平均响应时间为175.916msGPH2000返回的数据集大小与gRDocumentLength≈56928bytesHttpDocumentLength≈213000bytes一致GoGrpc->GoGrpc平均响应时间为379.699msPhpGrpc->GoGRPC的平均响应时间为678.643MSPHPHTTP->GOHTTP的平均响应时间为593.252ms响应1406.589MSPHPHTTP->GOGOGOHTTP-转到->gRPC66.215/ms71.52593.963379.699920.897PHP->Http120.692/ms138。332175.916593.2521285.640根据测试结果不难看出,在构建微服务时,PHP以gRPC的形式请求是最不理想的情况,PHP的Http调用响应时间比PHP的gRPC调用响应时间要快。方法略显理想,但当数据和并发量不断增长时,差距会不断拉大,所以在决定使用PHP作为客户端时,最好还是使用传统的HTTP方式,以保尊。你肯定觉得PHP做微服务被压垮了,其实这并不是PHP本身的错。我们都知道PHP是一种解释型语言,而Go是一种编译型语言。Go是预编译直接生成可执行文件,而PHP是动态语言。编译。那么为什么在PHP中通过gRPC调用这么慢呢?这取决于我们使用的谷歌官方提供的包。这个包把数据封装在类中,类没有Go的结构那么小巧玲珑。当数据不断增长时,类会呈指数级增长,我们看到通过HTTP调用PHP时,虽然contentbody是gRPC调用的几倍,但时间反而减少了。这其中的原因也很简单。通过HTTP调用,首先要进行通信,对HTTP头、内容体等进行封装。这样导致请求体很大,但是因为是直接请求一个结果,没有经过类,所以时间比gRPC调用要低,这也是PHP使用gRPC慢的原因之一。第二就是我们所说的PHP本身的特点。PHP动态编译后返回结果给用户。这个过程也是需要时间的,但是Go不需要这个时间,所以这也是影响响应时间的一个关键因素。致谢感谢您的光临,希望对您有所帮助。第一次发这种分析相关的文章,可能还有很多不足之处,多方调整,望采纳。