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,修改大些
1 2 3 4 5 6 | 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问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 修改配置文件 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 让参数生效。 |
*** 参数解释 ***
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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 )
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)