背景介绍:

项目是微服务的,使用docker容器,使用jenkins部署。测试环境有个公共服务一直以来都能正常发布,突然有一天不行了,经常发布失败,然后多发布几次就好了。

报错如下:

是栈溢出了,一般是新代码有死循环会出现。但是本地启动没问题并且环境上多发几次也能成功,说明没有死循环,肯定是其他原因。

分析问题:

Java运行时数据区分5部分:

从报错上来看是虚拟机栈溢出。

虚拟机栈是属于线程私有的,每个线程都会有一个虚拟机栈,随线程的创建而创建,消失而消失。它由一个个的栈帧组成,线程每次调用一个方法,就会有一个栈帧生成,并压栈。方法调用完之后,栈帧则出栈。当栈的深度不够,即栈的大小不足以放下所有的栈帧的时候,就会抛栈溢出的异常。

问题明确了,是栈的大小不够。

解决问题:

要把栈大小设置的大一点,要设置的大一点首先要知道目前是多大。项目未对虚拟机栈的大小作设定,也就是说目前的大小是默认值。

JDK5之后每个栈大小是1M,之前是256k。我们用的是JDK8,那么大小就是1M。要把栈大小设成大于1M的值。但是又不能设置太大,因为如果单个线程栈太大,就会限制最大线程数量。

项目没有高并发的情况,所以就先设置成2M。设置方法,在JVM启动参数里面加上 -Xss2m。

问题解决,再也没出现过问题。

最新文章

  1. 前端工具gulp使用
  2. gulp 学习笔记 (初识)
  3. kvm与selinux
  4. webdriver hangs when get or click
  5. yii2.0 DetailView 自定义样式
  6. 让网站变灰的CSS代码(支持IE、FIREFOX和CHROME)
  7. unity脚本的基础语法
  8. hdu2937
  9. 远程连接mysql数据慢的问题
  10. windows phone 使用相机并获取图片(3)
  11. 用maven创建工程
  12. Eviews 9.0新功能——估计方法(ARDL、面板自回归、门限回归)
  13. 在Ubuntu14.04上配置jdk环境
  14. enquire.js-响应css媒体查询的轻量级javascript库
  15. Python 编程快速上手 第五章总结
  16. Can't find kernel text map area from kcore
  17. 数据仓库专题20-案例篇:电商领域数据主题域模型设计v0.2(改进意见征集中)
  18. ionic 2.x 3.x项目结构解析
  19. python中,花括号,中括号,小括号的区别
  20. d3js网络拓扑关系特效可视化展现

热门文章

  1. tomcat启动后access error[730048]的解决方法
  2. EROS安装(windows)
  3. Java WebSocket实现简易聊天室
  4. (二)一个很好用的自动生成工具——mybatis generator
  5. google搜索运算符+101个Google技巧 - Google技巧的终极收集
  6. 内核ioctl函数的cmd宏参数
  7. IP 数据报
  8. Web中间件常见漏洞总结
  9. 前端每日实战:113# 视频演示如何用纯 CSS 创作一个赛车 loader
  10. web前端问题整理