公司有个采集项目,因为请求量较大,添加了redis集群,并且升级了原有的jdk1.7到jdk1.8版本,之后问题就出来了。

1.程序运行一段时间就自动停止,必须重启才能再次运行。

2.redis连接监控查看,有大量连接阻塞,导致redis数据处理极慢,甚至不处理请求。

经过一段时间的排查才发现问题的关键——JDK启动参数设置问题

原jdk1.7启动设置为:

java -jar -server -Xmx1024m -Xms1024m -Xmn256m
-Xss256k -XX:PermSize=128m /opt/source/crawler-storage/dev.crawler.storage1.jar > /opt/source/crawler-storage/info.out &

问题就发生在标红位置,升级为jdk1.8后还是使用了这个启动参数,导致问题出现。

修改后jdk1.8启动参数后问题解决,其他参数也有修改,但是主要还是这个永久代参数

/opt/jdk-1.8/jdk1..0_191/bin/java -jar -server -Xmx1024m -Xms1024m -Xmn256m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio= -XX:+UseConcMarkSweepGC
/opt/source/crawler-storage/dev.crawler.storage1.jar > /opt/source/crawler-storage/info.out &

JDK内存
jdk内存实际是jvm内存,jvm有一个运行时数据区,其实就是对这一部分的大小分配。

运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)

  Xss:每个线程的stack大小(栈)
  Xmx:JAVA HEAP的最大值、默认为物理内存的1/4
  Xms:JAVA HEAP的初始值,server端最好Xms与Xmx一样
  Xmn:JAVA HEAP young区的大小
  XX:PermSize:设定内存的永久保存区域
  XX:MaxPermSize:设定最大内存的永久保存区域

在JDK1.8中,取消了PermGen,取而代之的是Metaspace,所以PermSize和MaxPermSize参数失效,取而代之的是

-XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m

修改JDK内存
linux下:在tomcat的bin目录下编辑catalina.sh
cygwin=false上面加入

JAVA_OPTS="-Xms1024m -Xmx1024m -Xss1024K -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize1024m"

最新文章

  1. browserCaps与浏览器功能设置
  2. winform(四)——简单计算器制作
  3. Gulp安装及配合组件构建前端开发一体化
  4. sql server 索引分析相关sql
  5. perl 二维数组
  6. T-SQL Transact-SQL 编程
  7. mongodb备份与恢复
  8. 找出数组中最长的连续数字序列(JavaScript实现)
  9. 关于Redis中的字符串对象
  10. Ajaxadr ajax跨域请求crossdomain
  11. CentOS安装Nginx,并配置nodejs反向代理
  12. (转)JVM内存组成及分配
  13. docker~yml里使用现有网络
  14. 关于解决Tomcat服务器Connection reset by peer 导致的宕机
  15. css 图像热区
  16. Java基础语法入门
  17. 11.9luffycity(4)
  18. Ubuntu下matplotlib的中文显示
  19. 【CV】ICCV2015_Unsupervised Visual Representation Learning by Context Prediction
  20. MVC项目使用Oracle数据库运行提示:找不到请求的 .Net Framework Data Provider。可能没有安装

热门文章

  1. springboot~yml里的自定义配置
  2. Linux framebuffer测试程序
  3. Vmware虚拟机中CentOS7与Docker安装图文教程
  4. Synchronized锁性能优化偏向锁轻量级锁升级 多线程中篇(五)
  5. Python 私有变量的访问和赋值
  6. Webpack 4教程 - 第六部分 增强开发时体验
  7. 荣耀7.0系统手机最简单激活Xposed框架的步骤
  8. 浏览器与android移动端视频互播技术实现
  9. C++ 子类继承父类纯虚函数、虚函数和普通函数的区别
  10. java笔记----property文件读写