为JVM分配内存:一个案例研究

Batteriestand Anzeige 这篇文章是关于最近的性能调整练习的。 与往常一样,这些开始于关于症状的模糊表述。 这次,魔鬼采取了“应用程序速度慢,我们无法访问源代码的形式。 我们有什么改善情况的选择”。

对该应用程序进行仔细研究后发现,它由捆绑在一起的几个批处理作业组成。 深入研究“绩效”标准表明,执行特定工作所花费的时间过长。 稍后再仔细检查,我得到了一个可衡量的目标。 我需要从特定的作业运行时间中抽出两分钟,以适应预先分配的时间窗口。

陷入困境的应用程序是一个看起来非常无辜的小型JAR文件。 幸运的是,这也捆绑了负载测试。

在打开GC日志记录的情况下运行该应用程序( -XX:+ PrintGCTimeStamps -Xloggc:/path-to/gc.log -XX:+ PrintGCDetails )并快速查看日志,这是优化的第一个目标。 累积的GC暂停时间总计为三分半钟,暗示我可能会有机会。

在这种情况下,他可以使用几种工具,其中一些简单明了:

  • 修改堆/ permgen的大小
  • 更改GC算法
  • 配置内存区域之间的比率

我采取了改变堆大小的方法。 除了幸运的猜测外,它还基于最近学到的有关实时数据集大小和建议堆大小之间的相关性的课程。 从GC日志中,我还注意到该应用程序的实时数据集约为240m。 因此,根据我最近获得的知识,此应用程序堆的最佳结合点在720至960m之间。

但是在配置中,我发现-Xmx设置为仅300m。 稍微调整一下参数,我再次运行测试,结果如下:

堆大小 总GC暂停时间 通量
300m 207.48秒 92.25%
384m 54.13秒 97.97%
720m 20.52秒 99.11%
1,440m * 11.37秒 * 99.55%

*表示此配置在运行期间未触发Full GC。

现在,如果您查看结果,可能会将结果转换为“越大越好”。 如果仅以毫秒为单位进行测量,那的确是正确的。 如果成功标准之一与金钱有关,那么可能就不那么容易了。 在大型部署中将数百或数千台这些机器放在一起,您可能会单单在电费账单上就感到讨厌。

除此之外,本文是性能调优教科书中的教科书案例。 如果您有可衡量的目标,并且可以衡量结果而不是猜测,那么您将成功。 如果我被迫在没有明确目标或负载测试能力的情况下跳入,那么我仍然会调整配置的随机位。

参考: 为JVM分配内存:来自我们的JCG合作伙伴 Nikita Salnikov Tarnovski (来自Plumbr Blog博客) 的案例研究 。

翻译自: https://www.javacodegeeks.com/2014/03/allocating-memory-for-the-jvm-a-case-study.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Thymeleaf与Spring集成(第2部分)

1.简介 这是Thymeleaf与Spring教程集成的第二部分。 您可以在此处阅读第一部分,在那里您将学习如何配置该项目。 如本教程第一部分开头所述,Web应用程序将发送两种类型的请求: 插入新访客:将同步请求发送到服务器以添加新访客。…

我们正在破解JDBC,因此您不必

我们喜欢使用JDBC 没人说。 曾经 更严重的是,如果考虑一下,JDBC实际上是一个非常出色的API。 这也可能是Java成为当今流行平台的原因之一 。 在JDK 1.1 之前 , 以及在ODBC之前 (这已经很久了),很难想象有任…

python之requests

转载:https://www.cnblogs.com/zhangxinqi/p/9201594.html 阅读目录 1、requests简介2、requests的安装3、requests请求4、请求响应5、requests异常处理6、cookies7、请求会话(Session)8、SSL证书验证9、代理设置10、身份认证11、编码12、其他说明1、requests简介 requests是通…

php如何清理网站缓存,php怎么清除opcache缓存

php清除opcache缓存的方法:1、开发环境中修改php.ini文件,将“opcache.revalidate_freq”的值改为1;2、在线上环境中,可以在PHP文件中执行“opcache_reset();”代码,重启web服务器。本教程操作环境:windows…

ActiveMQ中的温度,存储和内存使用百分比

为了有效使用ActiveMQ,了解ActiveMQ如何管理内存和磁盘资源以处理非持久性消息和持久性消息非常重要。 ActiveMQ具有三个关键参数,需要对其进行检查。 临时使用百分比 这是已用于假脱机非持久消息的已分配磁盘存储的百分比 非持久性消息是无法在代理重…

Python 爬虫之 Scrapy 分布式原理以及部署

Scrapy分布式原理 关于Scrapy工作流程 Scrapy单机架构 上图的架构其实就是一种单机架构,只在本机维护一个爬取队列,Scheduler进行调度,而要实现多态服务器共同爬取数据关键就是共享爬取队列。 分布式架构 我将上图进行再次更改 这里重要的就是…

Apache Camel中的断路器模式

骆驼通常在分布式环境中用于访问远程资源。 远程服务可能由于各种原因和期间而失败。 对于短时间后暂时不可用且可恢复的服务,重试策略可能会有所帮助。 但是某些服务可能会失败或挂起更长时间,从而使调用应用程序无响应且速度缓慢。 防止级联故障和关键…

深入学习决策树算法原理

分类技术(或分类法)是一种根据输入数据建立分类模型的系统方法,分类法的例子包括决策分类法,基于规则的分类法,神经网络,支持向量机和朴素贝叶斯分类法。这些技术都使用一种学习算法(learning a…

Java 8 Friday Goodies:精益并发

在Data Geekery ,我们喜欢Java。 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 我们已经写了一些关于Java 8好东西的博客 ,现在我们觉得是时候开始一个新的博客系列了…

Floyd最短路(带路径输出)

摘要(以下内容来自百度) Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。 该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特弗洛伊德命名。 简介编辑 在…

CSS 小结笔记之清除浮动

浮动是一个非常好用的属性&#xff0c;但是有时会出现一些问题&#xff0c;需要进行清除浮动。例如 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…

路由与交换--交换机常用配置及其实验案例

1 交换机常用配置命令 1.1 配置主机名与口令 Switch>enable Switch#config t Switch(config)#hostname SA SA(config)#enable password cisco&#xff08;明文&#xff09; SA(config)#enable secret cisco&#xff08;暗文&#xff09; SA(config)#exit SA#show running-co…

linux自动启动network服务,Windows/Linux 创建开机启动服务

系统服务是一种应用程序类型&#xff0c;它在后台运行。服务应用程序通常可以在本地和通过网络为用户提供一些功能。有些软件无需安装解压就能使用&#xff0c;或者在安装时未向系统注册服务。如果我们需要开机启动&#xff0c;需要手动创建服务。Windows系统篇相对于在注册表中…

Xshell 基本使用方式 (1) -- 使用Xshell 连接 VMware下的linux系统

在VMware的虚拟机设置下的网络适配器设置成桥接模式&#xff0c;点击确定。 在终端中输入ifconfig命令查看IP 打开Xshell 新建会话 输入刚刚获取的IP地址&#xff0c;我的是219.219.198.225 如果点击右侧的用户身份验证 输入你的linux登录用户名以及密码 点击连接 可以看到已经…

django01

Django的下载与基本命令: 1、下载Django&#xff1a; pip3 install django 2、创建一个django project django-admin.py startproject mysite manage.py ----- Django项目里面的工具&#xff0c;通过它可以调用django shell和数据库等。    settings.py ---- 包含了项目的…

如何在linux环境下安装kvm,如何在Linux发行版上安装和配置KVM和Open vSwitch?

在如今多租户模式的数据中心环境下&#xff0c;虚拟化技术正从传统的基于虚拟机管理程序的服务器虚拟化&#xff0c;扩展到网络虚拟化。在这种环境下&#xff0c;基于软件的虚拟交换机通常连同虚拟机管理程序一起部署在服务器上&#xff0c;串联起了不同虚拟机之间传送的流量。…

hanlp中的N最短路径分词

N-最短路径 是中科院分词工具NLPIR进行分词用到的一个重要算法&#xff0c;张华平、刘群老师在论文《基于N-最短路径方法的中文词语粗分模型》中做了比较详细的介绍。该算法算法基本思想很简单&#xff0c;就是给定一待处理字串&#xff0c;根据词典&#xff0c;找出词典中所有…

shipyard-----------docker容器的可视化管理

shipyard是什么&#xff0c;由题目就可知&#xff0c;是一个对docker进行管理的可视化界面 照此步骤就能完成对shipyard搭建 <ip-of-host>内容要修改成你的docker0的IP地址&#xff0c;不知道的话就ifconfig就好了 如果搭建不成功则是防火墙未开放4001端口&#xff1a;su…

Eclipse对Java(TM)8的官方支持

Java开发工具&#xff08;JDT&#xff09;项目的项目负责人Dani Megert今天早些时候宣布了此声明 &#xff1a; Eclipse顶级项目非常自豪地宣布正式支持Java™8。从I20140318-0830开始&#xff0c;所有的Luna&#xff08;4.4&#xff09;构建都包含Eclipse对Java™8的支持。对…

Quartz.net使用笔记

一、需求场景&#xff1a;每天固定时间执行某个行为/动作。 一开始想用定时器&#xff0c;后来无意间发现了这个插件&#xff0c;感觉功能太强大了&#xff0c;完美解决了我的问题。 二、下载地址&#xff1a;https://www.quartz-scheduler.net/ 也可以在项目中直接使用nugut进…