当前位置: 首页 > news >正文

博客转wordpress/如何优化关键词的方法

博客转wordpress,如何优化关键词的方法,做平面设计的网站,自助外贸英文网站建设PHP7.4 Preload 功能测试PHP7.4 已经发布,发布了很多新特性,其中有一项功能比较吸引人,那就是预加载功能,可以将文件提前加载到内存当中,据说可以提升 PHP 性能,但是究竟是不是能提升,能提升多少…

44307f2d0b31b907fd8d331480d0df68.png

PHP7.4 Preload 功能测试

PHP7.4 已经发布,发布了很多新特性,其中有一项功能比较吸引人,那就是预加载功能,可以将文件提前加载到内存当中,据说可以提升 PHP 性能,但是究竟是不是能提升,能提升多少,我们可以做一个实验来测试下。

 先上github地址     https://github.com/linkkong/php7.4-preload-test

思路

预加载的原理就是将类提前加载到内存中,这种提升在 fpm 场景下最适合,所以笔者做了以下几个角度的测试。

  1. 速度测试:比较 php7.4 预加载、php7.4 无预加载、php7.3 三种环境下,同一份文件访问的表现

  2. 空间测试:也就是上面三种环境下内存使用情况

  3. CPU 使用的情况可以忽略,因为下面的测试使用了 docker,已经将 cpu 使用率降低到了 25%

工具

  1. php 项目:

    1) 在 www 目录下面,默认访问的是 index.php 文件,里面引用了 www/Dog 目录下的三个文件 (增加文件读取操作);
    2) 为了验证预加载确实读取类到了内存中,增加了 dog 类

  2. 使用 docker-compose 编排了三个 php 环境分别是 php7.4 预编译、php7.4 普通、php7.3 普通

      php74:
    image: php:7.4-fpm
    volumes:
    - ./www/:/var/www/html/:cached
    - ./php/preload.ini:/usr/local/etc/php/conf.d/preload.ini
    expose:
    - 9000
    deploy:
    resources:
    limits:
    cpus: '0.25'
    memory: 150M
    php741:
    image: php:7.4-fpm
    volumes:
    - ./www/:/var/www/html/:cached
    expose:
    - 9000
    deploy:
    resources:
    limits:
    cpus: '0.25'
    memory: 150M
    php73:
    image: php:7.3.9-fpm
    volumes:
    - ./www/:/var/www/html/:cached
    expose:
    - 9000
    deploy:
    resources:
    limits:
    cpus: '0.25'
    memory: 150M

    预加载比普通多了一个预加载的配置文件,把 www/Dog 里的文件进行了 opcache_compile_file

    参考 php/preload.ini 和 www/preload.php

  3. 增加 nginx 配置,参考 nginx/conf.d/default.conf

    环境Host
    php7.4 预加载http://localhost:8000/
    php7.4 无加载http://localhost:8001/
    php7.3 普通http://localhost:8002/

测试

打开 2 个窗口,分别执行下面的命令,不要关闭

      //监控docker容器的cpu使用和内存使用
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

//启动所有容器,必须使用--compatibility参数,否则CPU内存限制无效
docker-compose --compatibility up

运行起环境后可以看到,php74_1 是预加载环境,php741_1 是无预加载环境,php73_1 是 php7.3 环境,php7.4 预加载环境已经比无预加载环境多使用了 0.08Mib 内存,至于是不是已经预加载了类,还不能下结论

ebde776bf782e1efe0a97191e6133bd6.png


下面采用 ab 来进行简单的压测,并用每秒请求数来进行对比

      ab -c 10 -n 1000 http://localhost:8000/

测试 index.php

测试 7.4 预加载、7.4 无预加载、7.3 三种环境的表现

环境和地址第 1 次第 2 次第 3 次第 4 次第 5 次
7.4 预加载;http://localhost:8000/268367410345359
7.4 无预加载;http://localhost:8001/153180160137190
7.3;http://localhost:8002/154110126134131

测试 dog.php

dog.php 包含了 Dog 文件夹下的内容,主要测试 dog 类,是否已经在内存中。用 curl 访问即可,或者浏览器打开

环境和地址运行结果
7.4 预加载;http://localhost:8000/dog.phpCannot declare interface AnimalInterface, because the name is already in use in /var/www/html/dog.php
7.4 无预加载;http://localhost:8001/dog.phpIt is runningWang! Wang!
7.3;http://localhost:8002/dog.phpIt is runningWang! Wang!

测试 cat.php

cat.php 包含 cat 类,就是将 dog 类改了下名字全部放到了 cat.php 文件中,减少文件读写;主要测试在文件读写次数一致的情况下程序的表现

环境和地址第 1 次第 2 次第 3 次第 4 次第 5 次
7.4 预加载;http://localhost:8000/cat.php334305337395366
7.4 无预加载;http://localhost:8001/cat.php282201221213269
7.3;http://localhost:8002/cat.php219247216295254

总结

  1. php7.4 开启预加载,性能确实提升了很多,原因就是大幅度减少了文件读取的时间

  2. 未开启预加载的情况下,php7.3 和 php7.4 性能差距不大

  3. php7.4 开启了预加载后,但是并没有预加载特定文件 (Cat 类) 性能居然也有提升,原因还不得而知???

  4. 从第二个测试来看 php7.4 开启预加载之后,类确实加载到了内存中,这就是提升效率的关键,但是在实际项目中,这个特性可能会因为不熟悉特性重复定义类导致项目报错挂掉 (潜在的风险)

  5. 没有做关于 laravel 的测试,因为不想做了,原理差不多

  6. 在实际应用中,应该对经常使用的类进行热加载,而不要全部加载,参考下面第二个文献


最终还是做了 Laravel 的测试,见图

laravel 项目是 6.5 版本,只修改了 route/web.php,把默认返回值改成了一个 json,其他均未修改

貌似 php7.4 只要开启 preload,不需要配置 preload 文件也能加快访问速度 (原理未知,可能是自动缓存了,如果是自动缓存,那么后期更新项目就需要重启 fpm,不然会有问题),所以我在 www 目录下面放入了一个 laravel 项目,然后用 ab 进行了压测,压测结果特别低是因为对容器的 CPU 和内存做了限制。

从 2,3 图来看,没有开启 preload 的 php7.4 与 php7.3 性能相差无几,但是开启了 preload 的 php7.4,提升还是很明显的,降低了非常多的文件读取性能消耗

b416f4753a74e3e74fc16c7caedca237.png

参考文献

  1. Composer: How it should preload in PHP 7.4

  2. 国外同行做的测试,可能是基于 laravel

  3. Preloading in PHP 7.4

  4. 在 Docker Compose file 3 下限制 CPU 與 Memory

http://www.jmfq.cn/news/5156461.html

相关文章:

  • 爱搜索中级网站建设/做网站的公司有哪些
  • 南京专业建站/推广网站的公司
  • 网站建设 参照 标准规范/什么是网络销售
  • 乌鲁木齐市做平台网站/百度推广咨询
  • 重庆网站建设 优化/怎么引流到微信呢
  • 泉州哪家网站建设公司好/百度百度一下你就知道
  • 新加坡网站开发公司/微信营销软件排行榜
  • 北京网站建设怎么样天/互动营销的方式有哪些
  • 制作网站的网页/网站快速优化排名官网
  • 嘉兴网站建设定制网站/站长工具关键词排名怎么查
  • 购买网站广告位/软件培训机构有哪些?哪个比较好
  • 制作一个简单的php网站/百度联盟怎么加入赚钱
  • 网站手机端做排名靠前/网络营销推广系统
  • 建设银行手机官方网站下载安装/企业宣传推广怎么做
  • 微信网站界面设计/手机端竞价恶意点击
  • 做直播网站需要哪些技术/企业网站建设流程
  • 在ps中网站界面应做多大/营销活动方案
  • 网站栏目模板如何选择/网站为什么要做seo
  • 泰和县网站免费建站/关键词查询工具免费
  • 硬件定制/九幺seo工具
  • 网站美工外包公司/短视频运营是做什么的
  • 深圳网站建设响应式/成人技能培训
  • 张雪峰建议取消市场营销/网站seo方案案例
  • 怎么用织梦系统建一个网站/关键词排名优化公司地址
  • 有什么网站可以自己做书/百度网盘app下载安装官方免费下载
  • 宁波网站推广平台推荐/百度收录提交申请
  • 数据网站开发/关键词排名优化易下拉软件
  • 宽屏大气网站模板/网络营销理论包括哪些
  • 建设银行官方网站诚聘英才频道/刚刚突发1惊天大事
  • 永久免费改ip地址软件/网站排名优化方法