问题起因:
腾讯云监控CPU过高报警 10:20-10:28左右持续 百分之80以上。
问题排查:
1. 查看php-fpm慢日志发现有大量如下日志:
[26-May-2020 10:20:36] [pool www] pid 7368 script_filename = /data/nginx/webroot/simulation-strategy-20200519-203518-1fe2f1 4c/public/index.php ...省略... [0x00007ffd04de1440] ???() /data/nginx/webroot/simulation-strategy-20200519-2035 18-1fe2f14c/vendor/laravel/framework/src/Illuminate/Session/FileSessionHandler.p hp:109 [0x00007f00b421d9e0] gc() /data/nginx/webroot/simulation-strategy-20200519-20351 8-1fe2f14c/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSessi on.php:134 [0x00007f00b421d900] collectGarbage() /data/nginx/webroot/simulation-strategy-20 200519-203518-1fe2f14c/vendor/laravel/framework/src/Illuminate/Session/Middlewar e/StartSession.php:61 ...省略...
2.大概是因为session gc的时候过慢问题,查看时间分布
grep -E '26-May-2020|collectGarbage' php-slow.log|grep collectGarbage -B 1 | grep '26-May-2020'
发现CPU过高的时间段和这个报错非常吻合,持续观察11:32左右又有几个报错,看监控显示11:32确实有CPU过高的情况,基本确定是这里的问题
问题分析和解决:
查看.env文件里session的存储方式设置的是file,打开config/session.php
'lifetime' => 120, 'expire_on_close' => false,
expire_on_close设置为false,意味着用户关闭浏览器时没有删除session,这里我们改为true
cd storage/framework/sessions ls -alh |wc -l
发现有11236条记录,gc查找文件过慢,删除所有文件再观察(切记不能删除sessions文件夹,否则会出错)
当然最根本的还是要把session存入redis或者mc中最好。
《本文》有 0 条评论