当前位置: 首页 > 面试题库 >

调整JVM(GC)以提高服务器响应速度

丁晋
2023-03-14
问题内容

我正在具有8个核心CPU和6 GB内存的Linux 64bit上运行应用程序服务器。

服务器必须具有高响应能力。

经过检查,我发现服务器上运行的应用程序会创建大量的短期对象,并且只有大约200〜400 MB的长期对象(只要没有内存泄漏)

阅读http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html之后,
我使用了这些JVM选项

-server -Xms2g -Xmx2g -XX:MaxPermSize=256m -XX:NewRatio=1 -XX:+UseConcMarkSweepGC

结果:次要GC花费0.01到0.02秒,主要GC花费1到3秒,次要GC持续发生。

如何进一步改善或调整JVM?

更大的堆大小?但是GC是否需要更多时间?

较大的NewSize和MaxNewSize(针对年轻一代)?

其他收藏家?并行GC?

让大型GC频繁举行是个好主意吗?如何?


问题答案:

结果:次要GC花费0.01到0.02秒,主要GC花费1到3秒,次要GC持续发生。

除非您报告暂停情况,否则我会说CMS收集器正在执行您要求的操作。根据定义,CMS将使用比串行和并行收集器更多的CPU百分比。这是您为低暂停时间所付出的代价。

如果您看到1到3秒的 暂停
时间,我想您需要进行一些调整。我不是专家,但是您似乎应该CMSInitiatingOccupancyFraction从将默认值92 减小到开始。

增加堆大小将提高GC的“吞吐量”。但是,如果您的问题是长时间停顿,则增加堆大小可能会使问题变得更糟。



 类似资料:
  • Response响应对象主要将JSP容器处理后的结果传回到客户端。可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie、HTTP文件头信息等。 一个典型的响应看起来就像下面这样: HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (空行) <!doctype ...> <ht

  • 本文向大家介绍如何提高.Net动态页面响应速度?相关面试题,主要包含被问及如何提高.Net动态页面响应速度?时的应答技巧和注意事项,需要的朋友参考一下 研究表明,页面响应速度超过5秒,90%的用户会选择关闭页面。影响页面响应速度因素很多,分别从前端,后端,数据库,运维阐述。 一、前端性能优化(引用网址 https://www.jianshu.com/p/60b715bd5d73) 思路:分析一个

  • 正如前面的章节中讨论的那样,当一个 Web 服务器响应一个 HTTP 请求时,响应通常包括一个状态行、一些响应报头、一个空行和文档。一个典型的响应如下所示: HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Blank Line) <!doctype ...> <html> <head>...</he

  • 服务器响应 如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。 属性 描述 responseText 获得字符串形式的响应数据。 responseXML 获得 XML 形式的响应数据。 responseText 属性 如果来自服务器的响应并非 XML,请使用 responseText 属性。 responseText

  • 问题内容: 据说Java在性能方面比python快10倍。我也从基准测试中看到了这一点。但是真正使Java崩溃的是JVM的启动时间。 这是我做的测试: 相同的文件,Docx和Python中的12 KB ms XLSX嵌入式文件快25倍!WTH! Java需要2.055秒。 我知道这都是由于启动时间造成的,但是我需要通过脚本调用它来解析一些我不想重新发明python的文档。 但是对于解析10k +文

  • 问题内容: 我试图避免Full GC(来自下面的gc.log示例)在生产中的Tomcat中运行Grails应用程序。关于如何更好地配置GC的任何建议? 14359.317:[完整GC 14359.317:[CMS:3453285K- > 3099828K(4194304K),13.1778420秒] 4506618K-> 3099828K(6081792K),[CMS彼尔姆:261951K-> 1