当前位置:首页 > 运维 > 正文内容

记一次laravel项目因opcache导致的include过慢问题

phpmianshi9个月前 (06-12)运维661

问题表现 php-fpm-slow.log 大量如下日志:

script_filename = /data/nginx/webroot/app-20200611-160330-feb90625/public/index.
php
[0x00007fc41e61da20] Composer\Autoload\includeFile() /data/nginx/webroot/app-202
00611-160330-feb90625/vendor/composer/ClassLoader.php:322
[0x00007fc41e61d980] loadClass() unknown:0
[0x00007fc41e61d920] spl_autoload_call() unknown:0
[0x00007ffdb62f6820] ???() /data/nginx/webroot/app-20200611-160330-feb90625/vend
or/laravel/lumen-framework/src/Exceptions/Handler.php:108
[0x00007fc41e61d630] render() /data/nginx/webroot/app-20200611-160330-feb90625/a
pp/Exceptions/Handler.php:51
[0x00007fc41e61d5b0] render() /data/nginx/webroot/app-20200611-160330-feb90625/v
endor/laravel/lumen-framework/src/Concerns/RegistersExceptionHandlers.php:105
[0x00007fc41e61d4b0] sendExceptionToHandler() /data/nginx/webroot/app-20200611-1
60330-feb90625/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php:17
3
[0x00007fc41e61d1c0] dispatch() /data/nginx/webroot/app-20200611-160330-feb90625
/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php:108
[0x00007fc41e61d0c0] run() /data/nginx/webroot/app-20200611-160330-feb90625/publ
ic/index.php:28

[11-Jun-2020 16:04:24]  [pool www] pid 25856


查看源代码,发现就是include过慢???

public function loadClass($class)
{
    if ($file = $this->findFile($class)) {
        includeFile($file);

        return true;
    }
}

function includeFile($file)
{
    include $file;
}


怀疑是IO的问题,查看IO的使用情况参考:https://www.phpmianshi.com/?id=114

sar -b -f /var/log/sa11
06:20:01 PM       tps      rtps      wtps   bread/s   bwrtn/s
08:50:01 PM      3.44      0.00      3.44      0.01    306.01
09:00:03 PM      5.35      0.40      4.95      4.73    517.89
09:10:01 PM     23.73     15.86      7.87    207.76    799.36
09:20:03 PM     24.03     15.24      8.79    194.55   1147.58
09:30:01 PM    120.86    117.67      3.19  19941.43    164.30
09:40:01 PM     16.58     12.96      3.62    277.86    362.99
09:50:01 PM      5.43      2.55      2.88   1786.32    380.44


发现9:30左右bread/s 非常大,怀疑由于jenkins上线过多,而且没有重新reload php-fpm导致 opcache 内存或者缓存文件数达到上线导致的include慢


于是重启 php-fpm 发现状态恢复正常。


我们再打开 php.ini 的opcache.error_log  观察后面是否会继续出现这种情况。


opcache.error_log = /data/nginx/logs/php_opcache_error.log


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

彻底弄懂502/503/504(php-fpm+nginx)亲测可用

环境 php7.3.5 + nginx1.16.0相信大家都遇到过50X的问题,网上也看了很多文章,总是各种不对,所以今天咱们详解各种出现50X的情况和原因502:Bad Gateway &...

记一次连接Redis偶现超时的问题

记一次连接Redis偶现超时的问题

问题描述公司老的项目没有任何监控,对于系统的运行健康情况完全不知,于是搭建了2套监控系统,一套sentry监控代码层面的exception,一套cls告警,监控所有系统的状态码,应用日志等。监控系统上...

linux中高并发场景下too many open files问题处理

概述:高并发场景下 too many open files 问题。可以通过设置系统打开文件数,直接影响单个进程容纳的客户端连接数。比如会影响到长链接应用如聊天中单个进程能够维持的用户连接数, 运行ul...

linux中Cannot assign requested address的问题处理

问题描述:最近系统报警有类型如下错误:Cannot assign requested address  主要是连接mysql时产生的错误。分析原因:客户端与服务端每建立一个连接,客户端一侧都...

Linux中ss命令Recv-Q和Send-Q详解

ss用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netst...

linux中sed用法读这一篇就够了

1.概念sed是一种行编辑器,它一次处理一行内容。处理时,把 当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。