Laravel部署后,CPU 使用率过高。第二种方法

此方法适合小机器使用。如2核2g的服务器。

1、找到你的php.ini配置文件,修改如下:

复制代码
; 开启 OPcache
opcache.enable=1
; 分配给 OPcache 的内存大小(对于 Laravel 这种重框架,建议至少 128M,你的服务器建议设为 128 或 256)
opcache.memory_consumption=128
; 最大可缓存的文件数(Laravel 文件很多,建议 10000 以上)
opcache.max_accelerated_files=10000
; 生产环境设为 0(不自动检查文件变更,性能最佳),开发环境设为 2
opcache.revalidate_freq=0
; 关闭时间戳验证(生产环境必开)
opcache.validate_timestamps=0

2、值得注意的是php必须有opcache的扩展:

第一步:确认修改的是正确的配置文件

PHP 分为命令行(CLI)和 Web(FPM)两套配置。你修改的可能是 CLI 的配置,但网站运行读取的是 FPM 的配置。
2. 在宝塔面板中,进入 软件商店 -> 找到 PHP-8.2 -> 点击 设置
3. 切换到 配置文件 选项卡(不要去点"配置修改",直接点"配置文件"看原始 ini)。
4. 使用 Ctrl+F 搜索 opcache
5.

第二步:检查扩展加载指令(最常见错误)

[opcache] 区块的上方,必须有一行加载扩展的代码。请检查是否存在以下问题:
6. 错误写法extension=opcache.so (这是错的,OPcache 是 Zend 扩展,这样写不会生效)
7. 正确写法zend_extension=opcache.so
8. 路径问题 :如果上面那行被注释了(前面有分号 ;),请取消注释。如果写了绝对路径,请确保路径正确,例如:zend_extension=/www/server/php/82/lib/php/extensions/no-debug-non-zts-20220829/opcache.so

修改完 php.ini 后,必须重启 PHP-FPM 服务才能生效!

3、如何验证 OPcache 是否真正生效?

为了确保配置没有改错文件,且 OPcache 确实在工作,你可以按照以下两个步骤进行验证:

第一步:创建一个测试文件。在你的根目录新建一个文件。如test.php
复制代码
<?php
// 设置响应头为纯文本,方便在浏览器中查看
header('Content-Type: text/plain');

// 获取 OPcache 的运行状态
$status = opcache_get_status();

if (!$status) {
    echo "OPcache 未启用或配置有误!";
    exit;
}

// 输出关键指标
echo "OPcache 是否启用: " . ($status['opcache_enabled'] ? '是' : '否') . "\n";
echo "缓存命中率: " . $status['opcache_statistics']['opcache_hit_rate'] . "% \n";
echo "已缓存的脚本数: " . $status['opcache_statistics']['num_cached_scripts'] . " \n";
第二步:在浏览器中访问

打开浏览器,访问你的 Laravel 项目对应的测试文件地址,例如:

http://你的域名/test.php

输出证明你的 opcache 已经开启成功。自己再去看看请求是不是变快了呢。