暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

计算Weblogic服务器内存使用率

原创 尹国斌 2020-03-25
1536

Java进程消耗的内存不仅仅是简单的最大堆大小。在这里,我们将看到如何根据我们在JVM的启动参数中提供的参数来确定预期的本机内存大小。

可以按照以下步骤计算应用程序使用的内存:
1.我们将通过修改股票启动脚本为weblogic管理服务器设置适当的值。导航到域的主目录:

%WLS_HOME%/ user_projects / domains / my_domain /

根据需要用相关域替换my_domain。

2.通过运行startWeblogic.cmd脚本启动管理服务器。

3.在bin文件夹中,打开setDomainEnv.cmd文件。我们将在短期内编辑文件,但是首先我们将研究我们希望设置的值。

4.我们将最大和最小Java堆大小设置为相同的值。这会将堆内存大小设置为预定义的静态值,因此它不能增长或缩小。

-Xms1024m –Xmx1024m

5.向1,024 MB堆中添加预定义的永久代内存大小,我们将其设置为128 MB。现在,我们的总容量为1,152 MB。

-XX:PermSize = 128m -XX:MaxPermSize = 128m

6.使用将JIT代码缓存大小设置为16 MB。这使我们总共有1,168 MB。

-XX:ReservedCodeCacheSize = 16m

7.将线程堆栈大小设置为已知值。我们将使用128 KB作为起始值。Weblogic大量使用线程来满足您的业务逻辑请求。因此,我们不能只是将此值添加到我们的运行内存计数中

-Xss128k

8.为了计算JVM中的线程使用的内存总量,我们需要确定WebLogic管理服务器进程中的线程数。我们可以使用jconsole应用程序执行此操作,该应用程序将与管理服务器在同一台计算机上启动(因此我们不必设置任何远程访问策略)。在%MIDDLEWARE_HOME%/ your_hotspot_jdk_ version / bin目录中,打开jconsole.exe。

当jconsole运行时,通过从列表中选择进程并单击Connect将其附加到管理服务器。

在jconsole中,选择mbean选项卡,然后打开java.lang文件夹和Threading包。选择属性’; 您将看到ThreadCount属性=43;

我们将其乘以新的“线程堆栈大小”值(128 KB),得到的值为5.504 MB。这使我们总共可以运行1,173 MB。

9.最后,对文件进行更改并运行程序。这是我们在setSoaSuiteDomainEnv.cmd文件中所做的完整更改:

设置JAVA_OPTIONS =%JAVA_OPTIONS%

设置DEFAULT_MEM_ARGS = -Xms1024m -Xmx1024m -Xss128k设置PORT_MEM_ARGS = -Xms1024m -Xmx1024m -Xss128k

@REM此部分仅在非JRockit VM上运行

如果“%JAVA_VENDOR%” ==“ Oracle”转到OracleJVM

设置DEFAULT_MEM_ARGS =%DEFAULT_MEM_ARGS%-XX:PermSize = 128m

-XX:MaxPermSize = 128m -XX:ReservedCodeCacheSize = 16m

设置PORT_MEM_ARGS =%PORT_MEM_ARGS%-XX:PermSize = 128m

-XX:MaxPermSize = 128m -XX:ReservedCodeCacheSize = 16m
Java进程使用的内存比仅对象内存堆空间更多。在内部,内存布局如下图所示:

image.png

不幸的是,很难确切地确定操作系统如何原生地处理Java进程的内存。但是,有些选项可用于控制JVM的内存分配。

Java进程的总本机内存大小是通过将以下各项相加得出的:

1.最大对象堆大小(Xmx):用于保存Java对象的内存区域。

  1. PermGen内存大小(XX:MaxPermSize):存储Java类模板的内存区域。

3.线程堆栈大小(乘以运行时线程数)(XX:ThreadStackSize或Xss):这可配置最大线程调用堆栈深度。

  1. JIT代码缓存大小(XX:ReservedCodeCacheSize):这是为JVM响应代码路径而执行的优化保留的内存区域。

5.本机内存:来自JVM本身的本机内存,以及正在使用的所有本机库(在Internet上查找JNI)。

现在,我们可以更接近地估算Java进程的总内存大小。这将使我们能够根据物理或虚拟主机上的可用本机内存来调整JVM的大小。

从上面可以看到,我们的最终本机内存计算比最大堆空间高出近150 MB,如果您尝试将JVM共同放置在主机上,这并不是一个小小的改变。您可以使用Windows上的Process Explorer,Linux上的top命令或Solaris上的ps和prstat命令等工具监视本机内存。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论