美文网首页
PHP和Java性能压测验证

PHP和Java性能压测验证

作者: hehangfei | 来源:发表于2021-08-01 03:01 被阅读0次

    最近在思考建立一个新项目的时候,对语言和框架选择要要怎么考虑。我想,对于技能娴熟、人数较少的团队,并且预期不会做的得很复杂的项目,快速开发会作为主要参考标准;对于技能不娴熟、人数较多的项目,或者预期会做得很复杂的项目,我觉得规范规整是主要考虑条件,因为对于不娴熟的程序员,或者对于业务复杂的大项目,可能要规整到每一条sql语句和每一行代码,那么不能过度封装。

    说了这么多跟性能无关的,那让我们来看下一下性能。作为一个从PHP转Java的程序员,我想测一下两种语言在性能上的差异。不排除一些不严谨,测试结果有不准确的可能性。

    服务器配置

    2核4G Ubuntu

    测试工具

    JMeter

    测试1

    测试简单接口(只响应,啥都不干)的qps。预测:PHP接口CPU到达瓶颈,因为线程(JAVA)是比是进程(PHP)更轻量的单位,在线程中内存是可以共享的,而PHP要对每一次请求重新建立和销毁所有的对象,想想差别还是蛮大的。

    java接口
        @RequestMapping(path="/testt")
        @ResponseBody
        public String testt(HttpServletRequest request, HttpServletResponse response) {
            return "ok";
            
        }
    
    PHP接口
        public function testt(Request $request, LiveRecordService $service)
        {
            return "ok";
        }
    
    测试结果
    语言 每秒吞吐量 平均相应速度(ms) CPU使用程度
    PHP 227 366 100%
    Java 1175 78 50%
    PHP 压测结果
    Pasted Graphic 9.png
    Java 压测结果
    Pasted Graphic 8.png
    PHP 服务器监控
    Pasted Graphic 6.png
    Java 服务器监控
    Pasted Graphic 7.png

    测试2

    接口进行一次redis和MySQL主键查询,并返回查询数据。预期:由于Java配置了连接池,而PHP相应每个请求都建立Socket连接,三次握手,应该是有性能损失的,由于PHP已经瓶颈了,无法验证这个结论了,展示下测试结果吧。

    java
        @RequestMapping(path="/testt")
        @ResponseBody
        public ResponseVO testt(HttpServletRequest request, HttpServletResponse response) {
            MallAdmins aa = mallAdminsService.getById(57);
            WxUsers bb = redisService.getObject("wxUserInfo:11", WxUsers.class);
            return ResponseVO.responseSuc(Lists.newArrayList(aa, bb));
    
        }
    
    
    PHP
        public function testt(Request $request, LiveRecordService $service)
        {
    
            $aa = MallAdminModel::where("id", 57)->get();
            $bb = Redis::get("wxUserInfo:11");
            return LiveResponse::responseSuc([$aa, $bb]);
        }
    
    测试结果
    语言 每秒吞吐量 平均相应速度(ms) CPU使用程度
    PHP 155 608 100%
    Java 807 119 80%
    PHP压测结果
    image.png
    Java 压测结果
    image.png
    PHP 服务器监控
    Pasted Graphic 11.png
    Java 服务器监控
    Pasted Graphic 10.png

    总结

    符合预期。从实际角度上,我是遇到过接口瓶颈,但最后都发现是程序员有99%的提高空间,因为在系统设计上是程序有99%的改进空间,对于我做过的应用来说PHP的性能都是可以胜任的。但如果就这样否定性能的重要性,我想怕坐井观天。性能是可以用服务器堆的,但是如果是巨大而复杂的项目,服务器成本到最后我相信是指数级增加的。所以,我就保持这样的观点:性能,有比没有好。而对于快速开发这种定义,PHP的Larave框架真的是蛮好的,轮子齐全,PHP生态也还好,Spring的话,原生拿到手,开发是不快的。不过这些都不是问题,Spring也是可以极速开发的,如果哪天需要考虑规范规整,或者性能,那就是向下兼容。

    相关文章

      网友评论

          本文标题:PHP和Java性能压测验证

          本文链接:https://www.haomeiwen.com/subject/oqnrultx.html