JAVA_OPTS

本文介绍了如何通过调整 JAVA_OPTS 环境变量来优化 JBoss 应用服务器的 JVM 参数设置,包括内存分配、JPDA 设置及 Jetty Web 服务器端口等。同时提供了具体的优化实践案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

JAVA_OPTS

The JAVA_OPTS environment variable can be used to specify additional arguments to the JVM JBoss will be run in. These can be set as regular environment variables on the platform, in the startup script (run.sh or run.bat, or (when using run.sh) in run.conf.

Some examples:

 

Memory settings
JAVA_OPTS="-server -Xms128m -Xmx512m"

 

JDK 1.3.1 JPDA settings
JAVA_OPTS="-classic -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"

 

JDK 1.4.1 JPDA settings
JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"

 

Setting Jetty webserver port

JAVA_OPTS=-Djetty.port=80

 

 

-server

-Xms 00m

-Xmx 00m

-Xss 00k

+XX:AggressiveHeap

+XX:AggressiveHeap:会使得 Xms 1220m没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。 另外Xmx作为允许jvm使用的最大内存数量,不应该超过物理内存的90%。

Xss 00k :这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.

1.修改JAVA_OPTS,去掉+XX:AggressiveHeap,修改Xss。现在的JAVA_OPTS为:
-Xms 520m -Xmx 900m -Xss 128k
2.修改deploy/jbossweb-tomcat55.sar/service.xml
将maxThreads根据目前的访问量由默认的250降为75,并使用jboss 4默认未写在标准service.xml里面而jboss 3写入了的2个参数: maxSparseThreads=55,minSparseThreads=25
3.修改了oracle-ds.xml将最大连接数有150降为50.
4.去掉了一些不用的服务。

### 通过 JAVA_OPTS 设置 Java Agent 或排查相关问题 在 Java 应用中,可以通过 `JAVA_OPTS` 环境变量设置 Java Agent,或者排查与 Java Agent 相关的问题。以下是详细说明: #### 1. 设置 Java Agent 使用 `JAVA_OPTS` Java Agent 是一种可以在 JVM 启动时加载的工具类库,用于修改字节码或监控应用程序行为。要通过 `JAVA_OPTS` 设置 Java Agent,可以按照以下方式配置: ```bash export JAVA_OPTS="-javaagent:/path/to/your/agent.jar" ``` - `-javaagent` 参数指定需要加载的 Agent JAR 文件路径。 - `/path/to/your/agent.jar` 是实际的 Agent JAR 文件路径[^3]。 如果需要传递额外参数给 Agent,可以通过 `=` 分隔键值对的方式实现,例如: ```bash export JAVA_OPTS="-javaagent:/path/to/your/agent.jar=param1=value1,param2=value2" ``` Agent 的参数会在其 `premain` 方法中被解析。 #### 2. 排查 Java Agent 相关问题 当遇到 Java Agent 相关问题时,可以尝试以下方法进行排查: - **检查 Agent 是否正确加载** 可以通过启动日志确认 Agent 是否成功加载。通常,Agent 的 `premain` 方法会打印一些日志信息到控制台。如果没有看到相关日志,可能是路径错误或 JAR 文件损坏[^4]。 - **验证 Agent JAR 文件完整性** 确保 Agent JAR 文件包含正确的 `MANIFEST.MF` 配置,其中必须定义 `Premain-Class` 属性。例如: ```plaintext Premain-Class: com.example.MyAgent Can-Redefine-Classes: true Can-Retransform-Classes: true ``` - **调试 Agent 加载过程** 如果 Agent 加载失败,可以通过以下 JVM 参数启用调试模式: ```bash export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -javaagent:/path/to/your/agent.jar" ``` 这将允许通过远程调试工具连接到 JVM 并分析问题。 - **检查权限和路径** 确保运行环境有足够的权限访问 Agent JAR 文件,并且路径正确。如果使用相对路径,可能会导致找不到文件的问题[^5]。 #### 3. 示例代码 以下是一个简单的 Java Agent 实现示例,展示如何编写和使用 Agent: ```java // MyAgent.java import java.lang.instrument.Instrumentation; public class MyAgent { public static void premain(String agentArgs, Instrumentation inst) { System.out.println("Agent loaded with args: " + agentArgs); // 在此处添加自定义逻辑 } } ``` 编译并打包为 JAR 文件后,确保在 `META-INF/MANIFEST.MF` 中添加以下内容: ```plaintext Manifest-Version: 1.0 Premain-Class: MyAgent Can-Redefine-Classes: true Can-Retransform-Classes: true ``` #### 4. 注意事项 - 如果应用已经设置了其他 `JAVA_OPTS` 参数,确保不要覆盖原有值。可以通过追加的方式设置: ```bash export JAVA_OPTS="${JAVA_OPTS} -javaagent:/path/to/your/agent.jar" ``` - 某些容器环境(如 Docker)可能需要额外配置才能正确加载 Agent。例如,在 Dockerfile 中设置 `JAVA_OPTS` 或直接在命令行中传递参数[^6]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值