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 )

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM