最近公司项目请求缓慢,于是对项目进行优化升级。刚开始对服务器配置进行了升级,发现访问速度仍然存在缓慢,时有掉单的情况;于是接下来做了负载均衡(两台服务器),效果并不理想。经过几天后反而越来越慢,于是一顿查找,始终不得其解...
分析问题:项目一共三个分支A,B,C。 A在登录的时候会调取B和C的接口获取数据,B和C的接口在本地单独请求的时候都是基本秒开,一放到A项目使用curl请求的时候B接口的时候就卡到那了。刚开始还可以请求通,但是非常慢,请求多的情况下,压根就请求不通了,经常出现timeout和请求异常。想到可能是curl的问题,网上查了一些资料,一通操作,问题依旧...
偶然收到反馈说是登录B端经常莫名的掉线,询问运维知道B也做了负载均衡,有两台服务器。想到应该是session没有共享的问题,于是对两台服务器session共享,在两台服务器php.ini配置memcache存储session,实现session共享
memcache实现session共享配置如下:
session.save_handler = memcache // 默认 files 文件保存,改成 memcache
session.save_path = "tcp://127.0.0.1" // memcache 地址
接下来神奇的事情发生了,所有问题解决了,A通过curl请求B项目接口不在出现卡死,速度非常快。真是有心栽花花不发,无心插柳柳成荫!!!
最后分析原因,应该是服务器负载均衡后session文件形式保存,造成的session死锁(第一次认识到session也会造成死锁)。
此次爬坑持续时间久,排查时间长,造成损失大,在此记录一下,希望可以帮助大家。
热门文章