【问题标题】:Tomcat 8.5 memoryTomcat 8.5 内存
【发布时间】:2018-12-17 15:11:21
【问题描述】:

我在 Tomcat 8.5 上有一个带有 jdk1.8.0_171 的休息网络服务。我通过浏览器(例如 mozilla)执行了 web 服务,但它没有显示 json 输出。好吧,对于 Tomcat/Java,json 输出被认为很大。

所以在我添加的 tomcat/bin/catalina.sh 文件上:

JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Xms256m -Xmx1024m"

除了文件包含:

if [ -z "$JSSE_OPTS" ] ; then
  JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
fi

另外,tomcat 服务器状态显示: 可用内存:139.46 MB 总内存:247.56 MB 最大内存:989.87 MB

Memory Pool     Type             Initial    Total      Maximum      Used
Eden Space      Heap memory     68.31 MB    68.37 MB    273.06 MB   28.33 MB (10%)
Survivor Space  Heap memory     8.50 MB     8.50 MB     34.12 MB    4.90 MB (14%)
Tenured Gen     Heap memory     170.68 MB   170.68 MB   682.68 MB   74.84 MB (10%)
Code Cache      Non-heap memory 2.43 MB     36.00 MB    240.00 MB   35.52 MB (14%)
Compressed Class Space  
                Non-heap memory 0.00 MB     11.87 MB    1024.00 MB  11.10 MB (1%)
Metaspace   Non-heap memory     0.00 MB     92.62 MB    -0.00 MB    88.85 MB

Spring mvc 用于生成大小为 334273 个字符的 json 输出。代码没有错误(Java Exception)

那么在这种情况下缺少什么?如何增加休息服务的内存使用量?在我的本地电脑上,使用相同的服务/战争和逻辑效果很好

问候

【问题讨论】:

  • "json 输出被认为很大" 是什么意思?你有错误吗?如果是这样,请编辑问题并显示它。
  • 为什么你认为这是内存问题?
  • 你是如何生成 JSON 的?真的有多大?如果很大,您是否考虑过使用 streaming 来生成 JSON?
  • 在 server.xml 中添加 maxHttpHeaderSize="100000"。我希望这能解决您的问题

标签: java rest tomcat java-8 tomcat8


【解决方案1】:

在服务器测试中,我们有超过 6gb 的 RAM,所以我认为 Java 上没有分配内存堆的数量。

然后,我在 Tomcat 配置中添加了 maxHttpHeaderSize 并删除了 -Xms256m -Xmx1024m 并在进行测试后工作。

所以失败的原因是响应 HTTP 标头的最大大小,而不是我想的内存。

【讨论】:

    猜你喜欢
    • 2018-04-04
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2019-10-25
    • 2018-07-28
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多