E:\rzsjyfxruanjian\logstash-8.0.0\logstash-8.0.0>.\bin\logstash -f .\config\logstash.conf -t "Using bundled JDK: ." OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release. Sending Logstash logs to E:/rzsjyfxruanjian/logstash-8.0.0/logstash-8.0.0/logs which is now configured via log4j2.properties [2025-03-19T10:09:09,895][INFO ][logstash.runner ] Log4j configuration path used is: E:\rzsjyfxruanjian\logstash-8.0.0\logstash-8.0.0\config\log4j2.properties [2025-03-19T10:09:09,905][WARN ][logstash.runner ] The use of JAVA_HOME has been deprecated. Logstash 8.0 and later ignores JAVA_HOME and uses the bundled JDK. Running Logstash with the bundled JDK is recommended. The bundled JDK has been verified to work with each specific version of Logstash, and generally provides best performance and reliability. If you have compelling reasons for using your own JDK (organizational-specific compliance requirements, for example), you can configure LS_JAVA_HOME to use that version instead. [2025-03-19T10:09:09,905][INFO ][logstash.runner ] Starting Logstash {"logstash.version"=>"8.0.0", "jruby.version"=>"jruby 9.2.20.1 (2.5.8) 2021-11-30 2a2962fbd1 OpenJDK 64-Bit Server VM 11.0.13+8 on 11.0.13+8 +indy +jit [mswin32-x86_64]"} [2025-03-19T10:09:09,915][INFO ][logstash.runner ] JVM bootstrap flags: [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djruby.compile.invokedynamic=true, -Djruby.jit.threshold=0, -Djruby.regexp.interruptible=true, -XX:+HeapDumpOnOutOfMemoryError, -Djava.security.egd=file:/dev/urandom, -Dlog4j2.isThreadContextMapInheritable=true, --add-opens=java.base/java.security=ALL-UNNAMED, --add-opens=java.base/java.io=ALL-UNNAMED, --add-opens=java.base/java.nio.channels=ALL-UNNAMED, --add-opens=java.base/sun.nio.ch=ALL-UNNAMED, --add-opens=j
时间: 2025-03-19 21:05:02 浏览: 58
### 关于 Logstash 启动时 UseConcMarkSweepGC 被弃用的警告解决方案
Logstash 使用的是基于 JVM 的运行环境,因此当启动 Logstash 时,如果配置文件中指定了 `UseConcMarkSweepGC` 垃圾回收器选项,则会触发该垃圾回收器已被废弃的警告。此问题的根本原因在于自 Java 9 开始,`UseConcMarkSweepGC` 已被标记为过时,并将在未来的版本中移除[^1]。
#### 解决方案
为了消除这一警告并确保兼容未来版本的行为变化,可以通过修改 Logstash 的 JVM 配置来实现:
1. **禁用 CMS GC 并启用 G1 GC**
修改 Logstash 的 JVM 配置文件(通常位于 `/etc/logstash/jvm.options`),找到如下行:
```bash
-XX:+UseConcMarkSweepGC
```
将其注释掉或删除,并替换为以下内容以启用 G1 Garbage Collector:
```bash
-XX:+UseG1GC
```
2. **调整堆内存设置**
如果尚未定义堆大小参数,建议显式指定最小和最大堆大小以优化性能。例如,在同一配置文件中添加以下两行:
```bash
-Xms512m
-Xmx512m
```
这里的值可以根据实际硬件资源情况适当调整。
3. **验证更改后的效果**
执行上述操作后重启 Logstash 服务,观察日志输出是否仍然存在相关警告信息。如果没有其他依赖项强制要求使用特定类型的垃圾收集算法,则应不会再看到类似的提示消息。
```bash
sudo systemctl restart logstash
```
通过以上方法不仅解决了当前遇到的问题,还遵循了现代 Java 应用程序开发的最佳实践推荐——即采用更先进的垃圾回收机制替代逐渐被淘汰的传统方式[^4]。
### 注意事项
尽管 Elasticsearch 自带了一个嵌入式的 OpenJDK 版本用于简化部署流程[^3],但在某些情况下可能仍需手动安装更高版本的 JDK 来满足特定需求,比如支持最新的安全补丁或是利用新特性提升效率等。对于本文讨论的主题而言,默认随附的 JDK 已经足够胜任处理此类简单的配置变更任务。
---
阅读全文
相关推荐


















