session事故

作者: JUNE言JUNE语 | 来源:发表于2018-10-06 21:49 被阅读24次

事故本身

某个子系统在某个时间段内,突然爆发大量的用户频繁被退出登录。

事故原因

根据初步定位到是session存储的memcache容量不够,导致大量旧的session数据失效,因此大量先登录的用户被强制挤退。
session存储的memcache是独立配置的,容量为128M,一般情况下,128M的容量是足够存储的,但是本次可能是由于业务逻辑上存在的漏洞,往session中写入大量数据,同时登录用户量剧增导致存在问题出现。

解决方案

方案1

增大memcache的容量,这是一个最快的解决方案,但是治标不治本,真正导致session容量不够的原因还需要再定位

方案2

预防

这次的事故后,我才深深体会到前人所说的,多做一层封装的好处。
通过这次之后,我觉得对session的所有操作,都应该经过我们封装的方法进行处理后在set进memcache中。

实现:
session最常用的两个操作,set跟get
其中set方法是本次主要的封装对象

主要的做法有两个

  1. 针对set方法,做一个判断,当线上环境,不做任何处理,测试环境时,set进来的某个值,单个值大小超过某个阈值,或者是set成功后,当前session的大小超过另外一个阈值时【阈值需要根据实际情况去评估】,发出告警消息
  1. 定期监控memcache,主要监控两方面,总的数据容量是否超过某个阈值,另外就是检测每一个session是否超过某个阈值。因为一般情况下,我们session存储的memcache是单独开一个服务的,可以单独检查,并及时告警

相关文章

  • session事故

    事故本身 某个子系统在某个时间段内,突然爆发大量的用户频繁被退出登录。 事故原因 根据初步定位到是session存...

  • session 学习总结

    参考: Session Handling Session Functions (一)session session...

  • 从事故中学习 Spring Open Session In Vi

    事故 一天下午,一条生产环境的告警打乱了所有人的开发节奏:“服务器处理请求的失败率增高至7%”。正要打开监控系统看...

  • cookie,session使用

    session使用: //启动session的初始化 session_start(); //注册session变量...

  • PHP的session机制

    PHP机制使用session 开启session --- session_start()...

  • vue中sessionStorage使用

    设置session,setItem 获取session,getItem 删除session , removeItem

  • 在三个jsp页面中传递信息

    通过session 不通过session 通过hidden --能不用session就不用session --hi...

  • PHP中的session操作

    一、session的基本操作 session详解 二、session过期时间 三、session存储到Redis ...

  • Flask框架3

    自定义响应 Session session依赖cookie,cookie里面有session_id session...

  • laravel中session的使用

    可以使用request的session方法调用session 通过session类获取session: 使用use...

网友评论

    本文标题:session事故

    本文链接:https://www.haomeiwen.com/subject/najtaftx.html