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

记一次laravel项目因session导致cpu过高的问题

phpmianshi1年前 (2020-05-26)运维848

问题起因:


腾讯云监控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中最好。

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

相关文章

linux查看与挂载新磁盘

问题发现腾讯云控制台一个服务器挂载了一个数据库,但是用df -h查看磁盘占用情况,发现磁盘/dev/vdb1消失了。是磁盘坏了?还是没被系统识别?df -hFilesystem &...

linux下utf-8 BOM的检查和删除

背景当源程序是gbk格式,你转换为 utf8 的时候,很多情况是头部会出现bom,当是php 程序时候,这样会出现很多意想不到的事情,那怎么办呢,你可以用linux 命令来查找,然后对文件的bom 进...

linux中set指令用法

简介我们知道,Bash 执行脚本的时候,会创建一个新的 Shell,这个 Shell 就是脚本的执行环境,Bash 默认给定了这个环境的各种参数。set命令用来修改 Shell 环境的运行参数,也...

linux中Cannot assign requested address的问题处理

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

进程、线程和协程三者之间的区别和联系

一、进程、线程、协程1,进程    进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆,...

nginx面试中最常见的18道题

1、请解释一下什么是Nginx?Nginx---Ngine X,是一款免费的、自由的、开源的、高性能HTTP服务器和反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;Nginx以其高性能...

发表评论

访客

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