服务器做完负载均衡后session死锁造成curl请求慢

经验分享  2019-03-20 20:24   8522 负载均衡,session死锁

    最近公司项目请求缓慢,于是对项目进行优化升级。刚开始对服务器配置进行了升级,发现访问速度仍然存在缓慢,时有掉单的情况;于是接下来做了负载均衡(两台服务器),效果并不理想。经过几天后反而越来越慢,于是一顿查找,始终不得其解...

    分析问题:项目一共三个分支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也会造成死锁)。

    此次爬坑持续时间久,排查时间长,造成损失大,在此记录一下,希望可以帮助大家。



注:转载请注明出处为http://www.sandbean.com/article/96.html。

沙豆网 站长

追求卓越,奋斗不息!

168
文章
9904
点赞

更多文章