记录一次排查OOM的过程
服务出现了oom:

查看类信息发现char[]类型实例特别多,占用堆内存特别大

跟踪几个char[]实例的GC root,发现都是保存token信息,并且根都是session

然后查看session的个数,发现有63W

我是用100并发压测的为什么会产生那么多个session?我突然想到我们是前后端分离的,那么前端ajax的时候有没有保持session呢,我调试了下发现我们没有保持session
通过计算
100个并发的话,每个产生一个session,10多分钟后oom,差不多就是100(并发数)*2(每个ajax2个sesionId)*10(十分钟)*60(60秒)*5(5个接口)正好60w
发现oom原因,就是因为前后端分离后没有做好保持session的工作
解决方案
方案1:禁用session
优点:修改简单
缺点:使用session的地方需要替换了,假如使用了session的地方比较多,那么修改工作量就会变大
方案2:使用session共享
优点:可以解决每次ajax都要带token的问题,减少数据传输的大小,减轻带宽压力;修改也相对简单

做法
后台
服务提供者中做以下配置
1、导入依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
2、开启session共享(是通过redis来解决的)
spring:
session:
store-type: redis #开启session共享
3、配置redis
redis:
host: localhost
port: 6379
password: 123456
4、在启动类中开启session共享
@SpringBootApplication
@EnableRedisHttpSession //开启session共享
网关中需要做同样的配置
1、导入依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
2、开启session共享(是通过redis来解决的)
spring:
session:
store-type: redis #开启session共享
3、配置redis
redis:
host: localhost
port: 6379
password: 123456
4、配置网关
需要在网关中配置不过滤session
zuul:
routes:
user:
path: /user/**
serviceId: CLOUD-MALL-USER
sensitive-headers: #把sensitive-headers设置为空,session不过滤
5、在启动类中开启session共享
@SpringBootApplication
@EnableFeignClients
@EnableZuulProxy
@EnableRedisHttpSession //开启session共享
前端
1、前端引入axios时,在main.js中做一个全局设置,设置允许携带cookie发起请求。
import axios from 'axios' //导入axios
axios.defaults.withCredentials = true //全局设置axios允许携带cookie进行访问
Vue.prototype.$axios = axios
记录一次排查OOM的过程的更多相关文章
- 内存快照排查OOM,加密时错误方法指定provider方式错误引起的OOM
写在前面: 最近开始总结内存方面的东西,已经总结以前遇到的一些内存案例分享下,接下来还有几篇,然后是进程/线程相关的,逐渐形成我的知识体系树 如果你有兴趣,可以文章末尾的公众号二维码一起梳理这些信息. ...
- 记录一些在用wcf的过程中走过的泥巴路 【第一篇】
自从转移战场之后,比以前忙多了,博客也没能及时跟上,原本准备继续mvc系列,但是在那边技术比较陈旧还没能用得上,话说有3年没接触这玩意了,东西也 都忘了差不多了,既然再次接触,我也就继续温习温习,记录 ...
- 记录一次追踪@AutoWired的过程
目录 记录一次追踪@AutoWired的过程 前言 疑惑:依赖究竟是怎么自动注入的 AutoWiredAnnotationBeanPostProcessor中探究 自动注入debug流程追踪 dete ...
- 记录一次OOM分析过程
工具: jstat jmap jhat 1.jstat查看gc情况 S0C.S1C.S0U.S1U:Survivor 0/1区容量(Capacity)和使用量(Used) EC.EU:Eden区容量和 ...
- 记录一次排查使用HttpWebRequest发送请求的发生“基础连接已关闭:接收时发生错误”异常问题的过程
描述:某次更新程序,需要给测试员MM测试,之前都是正常的,更新后给MM测试就报异常System.Net.WebException 基础连接已经关闭:接收时发生错误 -------> System ...
- 记录一个排查oom思路
一.背景 客户反馈系统白屏,同时运维反馈内存占用多.项目包括数据库等,是部署在不同docker里的 二.查linux日志是linux将mysql杀掉了 egrep -i -r 'killed proc ...
- 记录一个前端bug的解决过程
人在江湖飘,哪能不挨刀. 我挨了重重一bug.严格来讲这可能是我职业生涯以来的首个悲惨经历,因为凭我的知识储备和经验,基本上任何可重现的bug都是可解的.然而这个bug却困扰了我三个月之久,它具有以下 ...
- 记录一次排查log4cxx库按照日期回滚,不创建新目录的BUG
目录 1.背景 2.排查步骤 2.1.错误代码定位 2.2.问题猜测 2.3.错误代码分析 2.4.错误原因 3.解决方法 1.背景 C++ 项目,使用了 log4cxx 日志库,版本为:0.10.0 ...
- Elasticsearch 的坑爹事——记录一次mapping field修改过程
Elasticsearch 的坑爹事 本文记录一次Elasticsearch mapping field修改过程 团队使用Elasticsearch做日志的分类检索分析服务,使用了类似如下的_mapp ...
- 记录整合sprinmvc+log4j的的过程
简介 由于进一步的学习以及便于自己更好的调试程序中遇到的错误,开始了将log4j整合到web项目中,项目是基于springmvc的,所以就做了一个springmvc和web项目的整合demo,本篇博客 ...
随机推荐
- 集成mupdf实现手写笔签批应用
1. 首先,需要在Android Studio中集成mupdf,使用Android Studio的Gradle构建系统,可以在dependencies中添加如下依赖: implementation ' ...
- Newtonsoft.Json高级用法--转载至 焰尾迭 随笔
本人只做搬运工,以这方便自己学习的态度!以下内容均为拷贝! 如有不适请联系本人! 本文原作者:焰尾迭 本文地址:http://www.cnblogs.com/yanweidie/p/4605212.h ...
- Docker 安装 PHP+Nginx
安装Nginx docker pull nginx 安装PHP docker pull php:7.3.5-fpm 启动PHP-FPM docker run --name myphpfpm -v /d ...
- 剑指 Offer 栈与队列
09. 用两个栈实现队列 没啥意思 不要想复杂了 就是暴力 class CQueue { public: CQueue() { } /* 一个主栈 一个缓存栈 来回导 得到队头 copy后一端变空了 ...
- win10彻底关闭系统更新 - 禁用 Windows Update Medic Service服务(1803和1809版本)
这几天有点苦恼呀,不,应该说是挺苦恼,我的新本儿到了几天之后,就开始推荐更新,可以我从心里就不想着更新,那么就要阻止它了,按照原来的办法,进行了双重阻止,这在之前是屡试不爽的,但是还是一直在提醒我 ...
- Vue源码中的数据代理
直接开讲: 由于这个Vue底层封装的函数太多了,我这里只讲思路不说具体的执行了什么函数. const vm=new Vue({这里写一个data,可以是对象也可以是函数}) 在写这段代码的时候 ...
- Mint UI中的坑:datetime-picker在PC浏览器上可以显示弹出的日期选择,但是在手机上是空白
在网上搜了一下,发现,在根组件App.vue上写入这个就可以了
- linux查找服务位置
- Pyscript使用本地Pyodide配置方法
背景 Pyscript工程本身很小,KB级别,引用的Pyodide工程比较大,因为包含了各种类库的wasm文件,默认引用了cdn上的文件,cdn上的文件又在外网,访问会中断导致不可用,于是需要使用本地 ...
- 查询dockerhub中某镜像所有版本
curl https://registry.hub.docker.com/v1/repositories/${imagename}/tags | tr -d '[[]" ]' | tr '} ...