首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速填充堆空间,导致GC频繁刷新,并且正在减缓消息处理速度。

快速填充堆空间,导致GC频繁刷新,并且正在减缓消息处理速度。
EN

Stack Overflow用户
提问于 2019-04-17 10:40:36
回答 1查看 216关注 0票数 0

我的应用程序从一个流中消费,然后将消息推到三个流上。

活页夹:

代码语言:javascript
复制
public interface MyBinder {

  @Input("input1")
  SubscribableChannel input1();

  @Output("output1")
  MessageChannel output1();

  @Output("output2")
  MessageChannel output2();

  @Output("output3")
  MessageChannel output3();


}

Config:

代码语言:javascript
复制
spring:
  cloud:
    stream:
      kinesis:
        binder:
          locks:
            leaseDuration: 30
            refreshPeriod: 3000
        bindings:
          input1:
            consumer:
              listenerMode: batch
              recordsLimit: 1500
              idleBetweenPolls: 10000
              consumer-backoff: 1000
      bindings:
        input1:
          group: my-group
          destination: input1-stream
          content-type: application/json
        output1:
          destination: output1-stream
          content-type: application/json
        output2:
          destination: output2-stream
          content-type: application/json
        output3:
          destination: output3-stream
          content-type: application/json

我们推送到每个记录中的数据大约为800 we。我们看到在AbstractAwsMessageHandler/AmazonKinesisAsyncClient中有更多的数据,这导致了非常频繁的GC刷新。

我们使用的是1.0版的粘合剂。

你能帮帮我吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-17 13:49:05

我只能从您的配置中说,您的1500 * 3 PutRecordRequest实例将在您的AbstractAwsMessageHandler上运行,而且由于默认情况下它处于async模式,您可能会导致队列开销,等待AWS服务处理它们。

您可以考虑降低recordsLimit或将所有生产者配置为sync模式:https://github.com/spring-cloud/spring-cloud-stream-binder-aws-kinesis/blob/master/spring-cloud-stream-binder-kinesis-docs/src/main/asciidoc/overview.adoc#kinesis-producer-properties

如果要消耗更少的记录,那么内存中的对象就会更少。在同步生成模式下,您将阻止使用者线程,因此它不会从输入流中提取更多的记录。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55725675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档