如何让Tomcat GC的之前,自动从nginx的upstream摘除,避免超时?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

如何让Tomcat GC的之前,自动从nginx的upstream摘除,避免超时?

2016-03-04 11:35:07 2490 2

tomcat会隔一段时间就进行一次fullgc,这时候如果nginx发送请求过来,就会导致请求超时.

有一种解决方案是在nginx端设置一个较短的超时时间,如果没有返回,就重新换一台机器重发请求,但是问题是这个请求是由副作用的,不允许重复发生

所有想问一下,有没有一个机制,在tomcat gc之前,nginx自动将其摘除,gc完成之后,再自动加回来

总之,就是避免tomcat gc造成的超时影响~

PS:

nginx的upstream设置了多台tomcat,只要一台发生了gc,所有落在这台机器的请求都会超时.

取消 提交回答
全部回答(2)
  • cyy_buaa
    2019-07-17 18:52:01

    1、根本上需要解决fullgc的问题,理论上不能出现fullgc,但是可以出现cms gc等。

    加入机器是4核的,8GB内存的,gc可以这样配置比较均衡。要求jdk7以上
     -server 
     -Xms4096m 
     -Xmx4096m 
     -XX:MetaspaceSize=512m 
     -XX:MaxMetaspaceSize=512m 
     -Xmn20486m 
     -XX:+UseConcMarkSweepGC 
     -XX:+UseCMSCompactAtFullCollection 
     -XX:CMSMaxAbortablePrecleanTime=5000 
     -XX:+CMSClassUnloadingEnabled 
     -XX:+UseCMSInitiatingOccupancyOnly 
     -XX:CMSInitiatingOccupancyFraction=82 
     -XX:+HeapDumpOnOutOfMemoryError 
     -XX:HeapDumpPath=/home/admin/java/java.hprof 
     -Xloggc:/home/admin/java/gc.log 
     -XX:+PrintGCDetails 
     -XX:+PrintGCDateStamps 
     -XX:MaxDirectMemorySize=1g 
     -XX:SurvivorRatio=10 
     -XX:+ExplicitGCInvokesConcurrent 
     -XX:ParallelGCThreads=4 

    2、如果实在找不到。

      每天定义跑个任务,先从nginx的upstream配置里摘掉后端tomcat,然后nginx reload,然后重启tomcat,等tomcat启动好了,再修改nginx upstream,追加tomcat,再nginx reload。

    3、nginx有模块,自动检测后端tomcat是否可用,如果没有心跳,可以自动摘掉。

    0 0
  • 小旋风柴进
    2019-07-17 18:52:01

    tomcat有个防止内存溢出的监听器:

    org.apache.catalina.core.JreMemoryLeakPreventionListener
    我怀疑是它调System.gc()导致的,而这种GC可能是用的stop the world方式,也就是说是非并发的。你可以试一下下面两种方案:

    1.-XX:+ExplicitGCInvokesConcurrent 并发GC
    2.停用该监听器或者从JVM级别禁用直接调用-XX:+DisableExplicitGC

    然后观察一段时间吧。

    0 0
添加回答
相关问答

41

回答

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 146646浏览量 回答数 41

170

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 232160浏览量 回答数 170

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 340419浏览量 回答数 8

13

回答

[@饭娱咖啡][¥20]我想知道 Java 关于引用那一块的知识

心意乱 2018-10-31 18:44:12 143278浏览量 回答数 13

119

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 300922浏览量 回答数 119

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 148504浏览量 回答数 22

24

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 657836浏览量 回答数 24

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 147483浏览量 回答数 31

43

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 142703浏览量 回答数 43

251

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 309265浏览量 回答数 251
2735
文章
6591
问答
问答排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载