zoukankan      html  css  js  c++  java
  • php性能优化 --- laravel 性能优化

    1、laravel官方提供了一些优化(laravel 5.* 版本):

        (1)、关闭debug,修改 .env 的  APP_DEBUG=false

        (2)、  sudo php artisan route:cache       路由缓存   (清理路由缓存   sudo php artisan route:clear)

      (3)、sudo php artisan config:cache      配置缓存     (清理配置缓存   sudo php artisan config:clear

      (4)、sudo php artisan optimize        Laravel优化命令,类映射加载优化   (清理缓存   sudo php artisan clear-compiled)

        (5)、sudo sudo composer dump-autoload --optimize      composer优化

    ***注***:想要laravel更快,可以使用swoole加速laravel。相关链接:https://www.cnblogs.com/cj8988/p/9506606.html

    2、内核限制数修改

      ulimit -n    默认是1024,修改大些

    sudo vim /etc/security/limits.conf 
    
    添加两行
    
    * soft nofile 655360
    * hard nofile 655360
    

      

    3、客户端链接信息 

    当前链接数      netstat -nat|grep ESTABLISHED|wc -l

    服务器处理任务信息     netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'

    查看客户端IP链接数     netstat -nat|grep "tcp"|awk ' {print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn 

    解决大量 Time_Wait问题

    修改配置文件
    sudo vim /etc/sysctl.conf
    
    添加
    
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_fin_timeout = 30
    
    net.ipv4.ip_local_port_range = 10240 60999
    net.ipv4.tcp_keepalive_time = 1200
    net.ipv4.tcp_max_syn_backlog = 8192
    net.ipv4.tcp_max_tw_buckets = 5000
    
    然后  sudo  /sbin/sysctl -p   让参数生效。
    

      *** 参数解释 ***

    net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
    
    net.ipv4.tcp_tw_reuse = 1    表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
    
    net.ipv4.tcp_fin_timeout=30    修改系統默认的 TIMEOUT 时间。
    
    net.ipv4.tcp_keepalive_time = 1200 
    #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
    
    net.ipv4.ip_local_port_range = 1024 65000 
    #表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
    
    net.ipv4.tcp_max_syn_backlog = 8192 
    #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
    
    net.ipv4.tcp_max_tw_buckets =  5000
    #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
    默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。
    

      

    4、php开启opcache (php7.1)

    修改配置   
    sudo vim /etc/php/7.1/fpm/php.ini
    找到   [opcache]
    修改如下
    
    [opcache]
    ; 开关打开
    opcache.enable=1
    
    ; 开启CLI
    opcache.enable_cli=1
    
    ; 可用内存, 酌情而定, 单位为:Mb
    opcache.memory_consumption=528
    
    ; Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)
    ; opcache.interned_strings_buffer=8
    
    ; 对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值
    opcache.max_accelerated_files=10000
    
    ; Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 定位为秒
    opcache.revalidate_freq=1    (生产环境,代码不变可以关闭  0)
    
    opcache.validate_timestamps=60     //多少秒更新一下php文件  (生产环境,代码不变可以关闭  0)
    
    ; 打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高
    opcache.fast_shutdown=1       

       ***注***  : 当 opcache.revalidate_freq 和 opcache.validate_timestamps 设置为0时,修改代码必须重新启动php-fpm才能使新代码生效。(使用命令  sudo service php7.1-fpm reload )

      

  • 相关阅读:
    vSphere 6.5支持512e,NVMe SSD呢?
    分布式队列神器 Celery
    www.coursera.org
    各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解
    SSD S.M.A.R.T
    2018世界人工智能大会在上海开幕
    ER TO SQL语句
    E-R图样例
    关于微软的.NET版本系列
    ArcGIS 10.6 安装破解教程
  • 原文地址:https://www.cnblogs.com/cj8988/p/9606508.html
Copyright © 2011-2022 走看看