网站运营 | 站长学院 | 技术文档 | 成语 | 歇后语 | 桌面壁纸 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论

PHP性能checklist

【 作者:hemon 更新时间:2013-10-16 | 字体:
[导读]PHP性能checklist 运行环境使用最新的PHP版本 + 20%5.5 > 5.4 > 5.3使用更快的OPCache缓存 + 20%ZendOpcache > APC使用Nginx+PHP-FPM 而不是 Apache+mod_phpNginxworkers进程数等于CPU核数worker_processes = [CPU c...
  1. 运行环境
    1. 使用最新的PHP版本 + 20%
      5.5 > 5.4 > 5.3
    2. 使用更快的OPCache缓存 + 20%
      ZendOpcache > APC
    3. 使用Nginx+PHP-FPM 而不是 Apache+mod_php
      1. Nginx
        1. workers进程数等于CPU核数
          worker_processes =  [CPU cores]>;
        2. 设置cpu亲密性<,每个worker对于一个cpu
          worker_cpu_affinity 01 10; #双核
        3. 使用 limit_zone阻止恶意访问
          limit_req_zone  $binary_remote_addr  zone=qps1:1m   rate=3r/s;
          location /delay {
              limit_req   zone=qps1  burst=5;
          }
        4. 静态文件缓存
          location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
              expires 24h;
              log_not_found off;
          }
      2. PHP-FPM
        1. 打开error_log+slow_log,帮助你监控,迅速定位错误
          slowlog = /var/log/php-fpm.$pool.slow
          request_slowlog_timeout = 1
          php_admin_value[error_log] = /var/log/php-fpm.$pool.error
        2. 使用进程池
          PHP支持使用进程池,比如将网站前端和管理后台分别设置两个进程池:
          [fontend]
          # 前端:并发请求多,限制内存占用>,限制单请求执行时长
          max_children=100;memory_limit=16M;request_terminate_timeout=15
          [backend]
          # 后端:并发请求少>,占用内存大<>,不限制执行时间
          max_children=10;memory_limit=128M;request_terminate_timeout=0
        3. 设置合理的进程数
          取决于你的PHP程序是IO密集型还是CPU密集型<,可使用htop观察;
          IO密集型:100/%MEM
          * 限制内存 php_admin_value[memory_limit] = 32M
          CPU密集型:100/%CPU
          pm = dynamic
          pm.max_children = ?
        4. 设置PHP最长执行时间
          PHP-FPM一个请求独占一个进程,如果不设置超时时间<,慢请求会迅速占满所有fpm进程
          request_terminate_timeout = 15
    4. MySQL
      1. 打开慢日志
        log_slow_queries = /var/log/mysql/mysql-slow.log
        long_query_time = 1
      2. Innodb 设置
        innodb_buffer_pool_size = 1G
        innodb_log_file_size = 256M
        innodb_log_buffer_size = 4M
        innodb_flush_log_at_trx_commit = 2
        innodb_thread_concurrency = 8
        innodb_flush_method = O_DIRECT
  2. PHP
    1. 优化原则
      抓大放?<。ㄗ苤葱惺背?执行时长*执行次数)
      * 安装xhprof+XHGui>;进入Hardest Hit ,按Total Wall Time(总执行时长)排序
    2. CPU
      * 监测代码执行前后的,脚本使用内存变化 

      1. 大加载
        1. 使用大数组作为配置文件
          使用hidef 一次性载入
        2. 载入不需要的类/库文件
          lazyload,按需加载库文件
      2. 反序列化
        1. 使用更快的序列化/反序列化方法
          explode > msgpack > igbinary > json> serialize
        2. 避免反序列化大对象(同大加载)
          保持小对象的序列化/反序列化,不要缓存大数据,检测方法同上
      3. 使用简单的数据/对象结构
        例如:避免对大数据集使用Active Record
    3. IOwait
      1. 架构设计上>,避免单点>,可水平扩展
        异步解决不了可扩展性问题<,总执行时长还是一样多
      2. 设置请求timeout
        避免一个服务延迟<,拖累整个页面请求
      3. 合并请求  curl/sql/redis/memcache
        * PHPIO: 循环执行IO函数,记录代码路径重复次数<,例如:
        foreach ($users as $uid) {
        mysql_query(‘SELECT * FROM usr WHERE uid = $uid’)
        }
        =>
        mysql_query(‘SELECT * FROM usr WHERE uid IN (‘.implode(‘,’,$users).’)');

原文:http://www.chinawobo.com/?p=858

友荐云推荐
  • 转载请注明来源:网站运营 网址:http://www.chinawobo.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载>,但请务必注明出处和原始作者>。文章版权归文章原始作者所有<。对于被本站转载文章的个人和网站<,我们表示深深的谢意。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。
RSS订阅
  • QQ邮箱
  • 填写您的邮件地址,订阅我们的精彩内容:
更多
© 2014 网站运营 - T086.com(原itlearner.com)
  • 歹徒抢劫超市前请人占卜 梦到头发着火代表会有钱? 2018-05-27
  • 薪资倒退至17年前水平 台北网友叹买房困难 2018-05-27
  • 四川馆藏国家重点档案195万余卷 2018-05-27
  • 张天爱变胖了?淡雅甜笑险露双下巴 2018-05-26
  • 论对汉文化东传的基本认识 2018-05-26
  • 4月台州全市新建商品住宅成交3444套 2018-05-25
  • 河北盐山:“点、线、面”结合推进人才强县 2018-05-25
  • 北京市幼儿园年内完成全员培训 2018-05-25
  • 河南职业技术学院全国技能(导游类)大赛获佳绩 2018-05-24
  • Футбол -- Арены ЧМ-2018 -- Стадион Нижний Новгород 2018-05-24
  • 美媒:美国对华战略缺乏头脑 2018-05-23
  • 中国钢企布局沿海 柳钢瞄准东盟经济圈 2018-05-23
  • 2018的偶像元年是否只是一场美丽的谎言?偶像练习生创造101选秀 2018-05-22
  • 上海临港有个“儿童大学” 2018-05-20
  • 2017年世界大学学术排名发布 清华进前50大学学术排名大学排行榜 2018-05-20
  • 微商货源 | 冠珠陶瓷 | 6688电视家官网 | 中康体检网 | 安徽极热网 | 北京赛车开奖号码 | 快猴网 | 迪威乐云商devmsn | 易奇八字 | wwe美国职业摔角 | 八字算命 | 河南旅游景点大全 | 冠珠陶瓷 | 广东旅游景点大全 |
    RunTime:6.06ms QueryTime:7