麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 語(yǔ)言 > PHP > 正文

PHP性能checklist

2024-09-04 11:50:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  1. 運(yùn)行環(huán)境
    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進(jìn)程數(shù)等于CPU核數(shù)
          worker_processes =  [CPU cores];
        2. 設(shè)置cpu親密性,每個(gè)worker對(duì)于一個(gè)cpu
          worker_cpu_affinity 01 10; #雙核
        3. 使用 limit_zone阻止惡意訪問(wèn)
          limit_req_zone  $binary_remote_addr  zone=qps1:1m   rate=3r/s;location /delay {    limit_req   zone=qps1  burst=5;}
        4. 靜態(tài)文件緩存
          location ~* /.(js|css|png|jpg|jpeg|gif|ico)$ {    expires 24h;    log_not_found off;}
      2. PHP-FPM
        1. 打開(kāi)error_log+slow_log,幫助你監(jiān)控,迅速定位錯(cuò)誤
          slowlog = /var/log/php-fpm.$pool.slow
          request_slowlog_timeout = 1
          php_admin_value[error_log] = /var/log/php-fpm.$pool.error
        2. 使用進(jìn)程池
          PHP支持使用進(jìn)程池,比如將網(wǎng)站前端和管理后臺(tái)分別設(shè)置兩個(gè)進(jìn)程池:
          [fontend]
          # 前端:并發(fā)請(qǐng)求多,限制內(nèi)存占用,限制單請(qǐng)求執(zhí)行時(shí)長(zhǎng)
          max_children=100;memory_limit=16M;request_terminate_timeout=15
          [backend]
          # 后端:并發(fā)請(qǐng)求少,占用內(nèi)存大,不限制執(zhí)行時(shí)間
          max_children=10;memory_limit=128M;request_terminate_timeout=0
        3. 設(shè)置合理的進(jìn)程數(shù)
          取決于你的PHP程序是IO密集型還是CPU密集型,可使用htop觀察;
          IO密集型:100/%MEM
          * 限制內(nèi)存 php_admin_value[memory_limit] = 32M
          CPU密集型:100/%CPU
          pm = dynamic
          pm.max_children = ?
        4. 設(shè)置PHP最長(zhǎng)執(zhí)行時(shí)間
          PHP-FPM一個(gè)請(qǐng)求獨(dú)占一個(gè)進(jìn)程,如果不設(shè)置超時(shí)時(shí)間,慢請(qǐng)求會(huì)迅速占滿所有fpm進(jìn)程
          request_terminate_timeout = 15
    4. MySQL
      1. 打開(kāi)慢日志
        log_slow_queries = /var/log/mysql/mysql-slow.log
        long_query_time = 1
      2. Innodb 設(shè)置
        innodb_buffer_pool_size = 1Ginnodb_log_file_size = 256Minnodb_log_buffer_size = 4Minnodb_flush_log_at_trx_commit = 2innodb_thread_concurrency = 8innodb_flush_method = O_DIRECT
  2. PHP
    1. 優(yōu)化原則
      抓大放小(總執(zhí)行時(shí)長(zhǎng)=執(zhí)行時(shí)長(zhǎng)*執(zhí)行次數(shù))
      * 安裝xhprof+XHGui;進(jìn)入Hardest Hit ,按Total Wall Time(總執(zhí)行時(shí)長(zhǎng))排序
    2. CPU
      * 監(jiān)測(cè)代碼執(zhí)行前后的,腳本使用內(nèi)存變化 

      1. 大加載
        1. 使用大數(shù)組作為配置文件
          使用hidef 一次性載入
        2. 載入不需要的類/庫(kù)文件
          lazyload,按需加載庫(kù)文件
      2. 反序列化
        1. 使用更快的序列化/反序列化方法
          explode > msgpack > igbinary > json> serialize
        2. 避免反序列化大對(duì)象(同大加載)
          保持小對(duì)象的序列化/反序列化,不要緩存大數(shù)據(jù),檢測(cè)方法同上
      3. 使用簡(jiǎn)單的數(shù)據(jù)/對(duì)象結(jié)構(gòu)
        例如:避免對(duì)大數(shù)據(jù)集使用Active Record
    3. IOwait
      1. 架構(gòu)設(shè)計(jì)上,避免單點(diǎn),可水平擴(kuò)展
        異步解決不了可擴(kuò)展性問(wèn)題,總執(zhí)行時(shí)長(zhǎng)還是一樣多
      2. 設(shè)置請(qǐng)求timeout
        避免一個(gè)服務(wù)延遲,拖累整個(gè)頁(yè)面請(qǐng)求
      3. 合并請(qǐng)求  curl/sql/redis/memcache
        * PHPIO: 循環(huán)執(zhí)行IO函數(shù),記錄代碼路徑重復(fù)次數(shù),例如:
        foreach ($users as $uid) {
        mysql_query(‘SELECT * FROM usr WHERE uid = $uid’)
        }
        =>
        mysql_query(‘SELECT * FROM usr WHERE uid IN (‘.implode(‘,’,$users).’)');
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 精品国产一区二区三区四区阿崩 | 黄色免费电影网址 | 国产午夜三级一区二区三桃花影视 | 中文在线免费观看 | 色婷婷av一区二区三区久久 | 一级黄色在线观看 | 精品一区二区在线观看 | 国产精品999在线观看 | 欧美一级特黄aaaaaa在线看首页 | a视频在线看| 免费网站看毛片 | h视频免费看 | 久久精品.com | 在线成人一区二区 | 91福利免费视频 | 女人解衣喂奶电影 | 电影91| 成人一级视频 | 久久精品久久久久 | 毛片视频网站 | 手机国产乱子伦精品视频 | 国产青草视频在线观看视频 | 免费中文视频 | 午夜精品福利视频 | 精品国产九九九 | 91精品国产91热久久久做人人 | 国产自在线 | 久久久久久久久久久一区 | 久草在线免费资源站 | 99国产精品自拍 | 久久精品性视频 | 性片网站| 一区二区三区欧美在线 | 一色桃子av大全在线播放 | 日本精品免费观看 | 欧美一级理论 | 欧美日韩国产一区二区三区在线观看 | 国产1区2区3区中文字幕 | 私库av在线免费观看 | 黄色大片免费看 | 欧美黄在线|