Kafka将应用程序流式传输到内存

时间:2019-11-14 12:23:01

标签: apache-kafka apache-kafka-streams

我们构建了具有相当复杂拓扑的Kafka-Streams应用程序:

Sub-topology: 0
        Source: KSTREAM-SOURCE-0000000000 (topics: [sourceTopic1])
          --> KSTREAM-MAPVALUES-0000000011, KSTREAM-PEEK-0000000002
        Processor: KSTREAM-MAPVALUES-0000000011 (stores: [])
          --> KSTREAM-KEY-SELECT-0000000012
          <-- KSTREAM-SOURCE-0000000000
        Processor: KSTREAM-KEY-SELECT-0000000012 (stores: [])
          --> KSTREAM-FILTER-0000000015
          <-- KSTREAM-MAPVALUES-0000000011
        Processor: KSTREAM-FILTER-0000000015 (stores: [])
          --> KSTREAM-SINK-0000000014
          <-- KSTREAM-KEY-SELECT-0000000012
        Processor: KSTREAM-PEEK-0000000002 (stores: [])
          --> none
          <-- KSTREAM-SOURCE-0000000000
        Sink: KSTREAM-SINK-0000000014 (topic: pop-to-pop-metrics-store-repartition)
          <-- KSTREAM-FILTER-0000000015

      Sub-topology: 1
        Source: KSTREAM-SOURCE-0000000001 (topics: [sourceTopic2])
          --> KSTREAM-FILTER-0000000003
        Processor: KSTREAM-FILTER-0000000003 (stores: [])
          --> KSTREAM-MAPVALUES-0000000005, KSTREAM-PEEK-0000000004
          <-- KSTREAM-SOURCE-0000000001
        Processor: KSTREAM-MAPVALUES-0000000005 (stores: [])
          --> KSTREAM-KEY-SELECT-0000000006
          <-- KSTREAM-FILTER-0000000003
        Processor: KSTREAM-KEY-SELECT-0000000006 (stores: [])
          --> KSTREAM-FILTER-0000000009
          <-- KSTREAM-MAPVALUES-0000000005
        Processor: KSTREAM-FILTER-0000000009 (stores: [])
          --> KSTREAM-SINK-0000000008
          <-- KSTREAM-KEY-SELECT-0000000006
        Processor: KSTREAM-PEEK-0000000004 (stores: [])
          --> none
          <-- KSTREAM-FILTER-0000000003
        Sink: KSTREAM-SINK-0000000008 (topic: pop-to-site-metrics-store-repartition)
          <-- KSTREAM-FILTER-0000000009

      Sub-topology: 2
        Source: KSTREAM-SOURCE-0000000010 (topics: [pop-to-site-metrics-store-repartition])
          --> KSTREAM-AGGREGATE-0000000007
        Processor: KSTREAM-AGGREGATE-0000000007 (stores: [pop-to-site-metrics-store])
          --> KTABLE-TOSTREAM-0000000017
          <-- KSTREAM-SOURCE-0000000010
        Processor: KTABLE-TOSTREAM-0000000017 (stores: [])
          --> KSTREAM-MAP-0000000018
          <-- KSTREAM-AGGREGATE-0000000007
        Processor: KSTREAM-MAP-0000000018 (stores: [])
          --> KSTREAM-FILTER-0000000022, KSTREAM-FILTER-0000000033
          <-- KTABLE-TOSTREAM-0000000017
        Processor: KSTREAM-FILTER-0000000033 (stores: [])
          --> KSTREAM-FILTER-0000000035
          <-- KSTREAM-MAP-0000000018
        Processor: KSTREAM-FILTER-0000000022 (stores: [])
          --> KSTREAM-SINK-0000000021
          <-- KSTREAM-MAP-0000000018
        Processor: KSTREAM-FILTER-0000000035 (stores: [])
          --> KSTREAM-SINK-0000000034
          <-- KSTREAM-FILTER-0000000033
        Sink: KSTREAM-SINK-0000000021 (topic: KSTREAM-MAP-0000000018-repartition)
          <-- KSTREAM-FILTER-0000000022
        Sink: KSTREAM-SINK-0000000034 (topic: KSTREAM-FILTER-0000000033-repartition)
          <-- KSTREAM-FILTER-0000000035

      Sub-topology: 3
        Source: KSTREAM-SOURCE-0000000016 (topics: [pop-to-pop-metrics-store-repartition])
          --> KSTREAM-AGGREGATE-0000000013
        Processor: KSTREAM-AGGREGATE-0000000013 (stores: [pop-to-pop-metrics-store])
          --> KTABLE-TOSTREAM-0000000019
          <-- KSTREAM-SOURCE-0000000016
        Processor: KTABLE-TOSTREAM-0000000019 (stores: [])
          --> KSTREAM-MAP-0000000020
          <-- KSTREAM-AGGREGATE-0000000013
        Processor: KSTREAM-MAP-0000000020 (stores: [])
          --> KSTREAM-FILTER-0000000025
          <-- KTABLE-TOSTREAM-0000000019
        Processor: KSTREAM-FILTER-0000000025 (stores: [])
          --> KSTREAM-SINK-0000000024
          <-- KSTREAM-MAP-0000000020
        Sink: KSTREAM-SINK-0000000024 (topic: KSTREAM-MAP-0000000020-repartition)
          <-- KSTREAM-FILTER-0000000025

      Sub-topology: 4
        Source: KSTREAM-SOURCE-0000000023 (topics: [KSTREAM-MAP-0000000018-repartition])
          --> KSTREAM-WINDOWED-0000000027
        Source: KSTREAM-SOURCE-0000000026 (topics: [KSTREAM-MAP-0000000020-repartition])
          --> KSTREAM-WINDOWED-0000000028
        Processor: KSTREAM-WINDOWED-0000000027 (stores: [KSTREAM-JOINTHIS-0000000029-store])
          --> KSTREAM-JOINTHIS-0000000029
          <-- KSTREAM-SOURCE-0000000023
        Processor: KSTREAM-WINDOWED-0000000028 (stores: [KSTREAM-JOINOTHER-0000000030-store])
          --> KSTREAM-JOINOTHER-0000000030
          <-- KSTREAM-SOURCE-0000000026
        Processor: KSTREAM-JOINOTHER-0000000030 (stores: [KSTREAM-JOINTHIS-0000000029-store])
          --> KSTREAM-MERGE-0000000031
          <-- KSTREAM-WINDOWED-0000000028
        Processor: KSTREAM-JOINTHIS-0000000029 (stores: [KSTREAM-JOINOTHER-0000000030-store])
          --> KSTREAM-MERGE-0000000031
          <-- KSTREAM-WINDOWED-0000000027
        Processor: KSTREAM-MERGE-0000000031 (stores: [])
          --> KSTREAM-KEY-SELECT-0000000032
          <-- KSTREAM-JOINTHIS-0000000029, KSTREAM-JOINOTHER-0000000030
        Processor: KSTREAM-KEY-SELECT-0000000032 (stores: [])
          --> KSTREAM-FILTER-0000000038
          <-- KSTREAM-MERGE-0000000031
        Processor: KSTREAM-FILTER-0000000038 (stores: [])
          --> KSTREAM-SINK-0000000037
          <-- KSTREAM-KEY-SELECT-0000000032
        Sink: KSTREAM-SINK-0000000037 (topic: KSTREAM-KEY-SELECT-0000000032-repartition)
          <-- KSTREAM-FILTER-0000000038

      Sub-topology: 5
        Source: KSTREAM-SOURCE-0000000036 (topics: [KSTREAM-FILTER-0000000033-repartition])
          --> KSTREAM-WINDOWED-0000000040
        Source: KSTREAM-SOURCE-0000000039 (topics: [KSTREAM-KEY-SELECT-0000000032-repartition])
          --> KSTREAM-WINDOWED-0000000041
        Processor: KSTREAM-WINDOWED-0000000040 (stores: [KSTREAM-JOINTHIS-0000000042-store])
          --> KSTREAM-JOINTHIS-0000000042
          <-- KSTREAM-SOURCE-0000000036
        Processor: KSTREAM-WINDOWED-0000000041 (stores: [KSTREAM-JOINOTHER-0000000043-store])
          --> KSTREAM-JOINOTHER-0000000043
          <-- KSTREAM-SOURCE-0000000039
        Processor: KSTREAM-JOINOTHER-0000000043 (stores: [KSTREAM-JOINTHIS-0000000042-store])
          --> KSTREAM-MERGE-0000000044
          <-- KSTREAM-WINDOWED-0000000041
        Processor: KSTREAM-JOINTHIS-0000000042 (stores: [KSTREAM-JOINOTHER-0000000043-store])
          --> KSTREAM-MERGE-0000000044
          <-- KSTREAM-WINDOWED-0000000040
        Processor: KSTREAM-MERGE-0000000044 (stores: [])
          --> KSTREAM-FILTER-0000000045
          <-- KSTREAM-JOINTHIS-0000000042, KSTREAM-JOINOTHER-0000000043
        Processor: KSTREAM-FILTER-0000000045 (stores: [])
          --> KSTREAM-KEY-SELECT-0000000046
          <-- KSTREAM-MERGE-0000000044
        Processor: KSTREAM-KEY-SELECT-0000000046 (stores: [])
          --> KSTREAM-SINK-0000000047
          <-- KSTREAM-FILTER-0000000045
        Sink: KSTREAM-SINK-0000000047 (topic: targetTopic1)
          <-- KSTREAM-KEY-SELECT-0000000046

      Sub-topology: 6
        Source: KSTREAM-SOURCE-0000000048 (topics: [targetTopic1])
          --> KSTREAM-KEY-SELECT-0000000060
        Processor: KSTREAM-KEY-SELECT-0000000060 (stores: [])
          --> KSTREAM-FILTER-0000000062
          <-- KSTREAM-SOURCE-0000000048
        Processor: KSTREAM-FILTER-0000000062 (stores: [])
          --> KSTREAM-SINK-0000000061
          <-- KSTREAM-KEY-SELECT-0000000060
        Sink: KSTREAM-SINK-0000000061 (topic: KSTREAM-KEY-SELECT-0000000060-repartition)
          <-- KSTREAM-FILTER-0000000062

      Sub-topology: 7
        Source: KSTREAM-SOURCE-0000000049 (topics: [sourceTopic3])
          --> KSTREAM-MAPVALUES-0000000051, KSTREAM-PEEK-0000000050
        Processor: KSTREAM-MAPVALUES-0000000051 (stores: [])
          --> KSTREAM-FILTER-0000000052
          <-- KSTREAM-SOURCE-0000000049
        Processor: KSTREAM-FILTER-0000000052 (stores: [])
          --> KSTREAM-KEY-SELECT-0000000053
          <-- KSTREAM-MAPVALUES-0000000051
        Processor: KSTREAM-KEY-SELECT-0000000053 (stores: [])
          --> KSTREAM-FILTER-0000000056
          <-- KSTREAM-FILTER-0000000052
        Processor: KSTREAM-FILTER-0000000056 (stores: [])
          --> KSTREAM-SINK-0000000055
          <-- KSTREAM-KEY-SELECT-0000000053
        Processor: KSTREAM-PEEK-0000000050 (stores: [])
          --> none
          <-- KSTREAM-SOURCE-0000000049
        Sink: KSTREAM-SINK-0000000055 (topic: effective-link-selector-store-repartition)
          <-- KSTREAM-FILTER-0000000056

      Sub-topology: 8
        Source: KSTREAM-SOURCE-0000000057 (topics: [effective-link-selector-store-repartition])
          --> KSTREAM-AGGREGATE-0000000054
        Processor: KSTREAM-AGGREGATE-0000000054 (stores: [effective-link-selector-store])
          --> KTABLE-TOSTREAM-0000000058
          <-- KSTREAM-SOURCE-0000000057
        Processor: KTABLE-TOSTREAM-0000000058 (stores: [])
          --> KSTREAM-MAP-0000000059
          <-- KSTREAM-AGGREGATE-0000000054
        Processor: KSTREAM-MAP-0000000059 (stores: [])
          --> KSTREAM-FILTER-0000000065, KSTREAM-FILTER-0000000073
          <-- KTABLE-TOSTREAM-0000000058
        Processor: KSTREAM-FILTER-0000000073 (stores: [])
          --> KSTREAM-FILTER-0000000078
          <-- KSTREAM-MAP-0000000059
        Processor: KSTREAM-FILTER-0000000065 (stores: [])
          --> KSTREAM-SINK-0000000064
          <-- KSTREAM-MAP-0000000059
        Processor: KSTREAM-FILTER-0000000078 (stores: [])
          --> KSTREAM-SINK-0000000077
          <-- KSTREAM-FILTER-0000000073
        Sink: KSTREAM-SINK-0000000064 (topic: KSTREAM-MAP-0000000059-repartition)
          <-- KSTREAM-FILTER-0000000065
        Sink: KSTREAM-SINK-0000000077 (topic: KSTREAM-FILTER-0000000073-repartition)
          <-- KSTREAM-FILTER-0000000078

      Sub-topology: 9
        Source: KSTREAM-SOURCE-0000000063 (topics: [KSTREAM-KEY-SELECT-0000000060-repartition])
          --> KSTREAM-WINDOWED-0000000067
        Source: KSTREAM-SOURCE-0000000066 (topics: [KSTREAM-MAP-0000000059-repartition])
          --> KSTREAM-WINDOWED-0000000068
        Processor: KSTREAM-WINDOWED-0000000067 (stores: [KSTREAM-JOINTHIS-0000000069-store])
          --> KSTREAM-JOINTHIS-0000000069
          <-- KSTREAM-SOURCE-0000000063
        Processor: KSTREAM-WINDOWED-0000000068 (stores: [KSTREAM-JOINOTHER-0000000070-store])
          --> KSTREAM-JOINOTHER-0000000070
          <-- KSTREAM-SOURCE-0000000066
        Processor: KSTREAM-JOINOTHER-0000000070 (stores: [KSTREAM-JOINTHIS-0000000069-store])
          --> KSTREAM-MERGE-0000000071
          <-- KSTREAM-WINDOWED-0000000068
        Processor: KSTREAM-JOINTHIS-0000000069 (stores: [KSTREAM-JOINOTHER-0000000070-store])
          --> KSTREAM-MERGE-0000000071
          <-- KSTREAM-WINDOWED-0000000067
        Processor: KSTREAM-MERGE-0000000071 (stores: [])
          --> KSTREAM-KEY-SELECT-0000000072
          <-- KSTREAM-JOINTHIS-0000000069, KSTREAM-JOINOTHER-0000000070
        Processor: KSTREAM-KEY-SELECT-0000000072 (stores: [])
          --> KSTREAM-FILTER-0000000075
          <-- KSTREAM-MERGE-0000000071
        Processor: KSTREAM-FILTER-0000000075 (stores: [])
          --> KSTREAM-SINK-0000000074
          <-- KSTREAM-KEY-SELECT-0000000072
        Sink: KSTREAM-SINK-0000000074 (topic: KSTREAM-KEY-SELECT-0000000072-repartition)
          <-- KSTREAM-FILTER-0000000075

      Sub-topology: 10
        Source: KSTREAM-SOURCE-0000000076 (topics: [KSTREAM-KEY-SELECT-0000000072-repartition])
          --> KSTREAM-WINDOWED-0000000080
        Source: KSTREAM-SOURCE-0000000079 (topics: [KSTREAM-FILTER-0000000073-repartition])
          --> KSTREAM-WINDOWED-0000000081
        Processor: KSTREAM-WINDOWED-0000000080 (stores: [KSTREAM-JOINTHIS-0000000082-store])
          --> KSTREAM-JOINTHIS-0000000082
          <-- KSTREAM-SOURCE-0000000076
        Processor: KSTREAM-WINDOWED-0000000081 (stores: [KSTREAM-JOINOTHER-0000000083-store])
          --> KSTREAM-JOINOTHER-0000000083
          <-- KSTREAM-SOURCE-0000000079
        Processor: KSTREAM-JOINOTHER-0000000083 (stores: [KSTREAM-JOINTHIS-0000000082-store])
          --> KSTREAM-MERGE-0000000084
          <-- KSTREAM-WINDOWED-0000000081
        Processor: KSTREAM-JOINTHIS-0000000082 (stores: [KSTREAM-JOINOTHER-0000000083-store])
          --> KSTREAM-MERGE-0000000084
          <-- KSTREAM-WINDOWED-0000000080
        Processor: KSTREAM-MERGE-0000000084 (stores: [])
          --> KSTREAM-MAP-0000000085
          <-- KSTREAM-JOINTHIS-0000000082, KSTREAM-JOINOTHER-0000000083
        Processor: KSTREAM-MAP-0000000085 (stores: [])
          --> KSTREAM-BRANCH-0000000086
          <-- KSTREAM-MERGE-0000000084
        Processor: KSTREAM-BRANCH-0000000086 (stores: [])
          --> KSTREAM-BRANCHCHILD-0000000087, KSTREAM-BRANCHCHILD-0000000088
          <-- KSTREAM-MAP-0000000085
        Processor: KSTREAM-BRANCHCHILD-0000000088 (stores: [])
          --> KSTREAM-KEY-SELECT-0000000089
          <-- KSTREAM-BRANCH-0000000086
        Processor: KSTREAM-BRANCHCHILD-0000000087 (stores: [])
          --> KSTREAM-FILTER-0000000091
          <-- KSTREAM-BRANCH-0000000086
        Processor: KSTREAM-KEY-SELECT-0000000089 (stores: [])
          --> KSTREAM-FILTER-0000000094
          <-- KSTREAM-BRANCHCHILD-0000000088
        Processor: KSTREAM-FILTER-0000000091 (stores: [])
          --> KSTREAM-SINK-0000000090
          <-- KSTREAM-BRANCHCHILD-0000000087
        Processor: KSTREAM-FILTER-0000000094 (stores: [])
          --> KSTREAM-SINK-0000000093
          <-- KSTREAM-KEY-SELECT-0000000089
        Sink: KSTREAM-SINK-0000000090 (topic: KSTREAM-BRANCHCHILD-0000000087-repartition)
          <-- KSTREAM-FILTER-0000000091
        Sink: KSTREAM-SINK-0000000093 (topic: KSTREAM-KEY-SELECT-0000000089-repartition)
          <-- KSTREAM-FILTER-0000000094

      Sub-topology: 11
        Source: KSTREAM-SOURCE-0000000092 (topics: [KSTREAM-BRANCHCHILD-0000000087-repartition])
          --> KSTREAM-WINDOWED-0000000096
        Source: KSTREAM-SOURCE-0000000095 (topics: [KSTREAM-KEY-SELECT-0000000089-repartition])
          --> KSTREAM-WINDOWED-0000000097
        Processor: KSTREAM-WINDOWED-0000000096 (stores: [KSTREAM-OUTERTHIS-0000000098-store])
          --> KSTREAM-OUTERTHIS-0000000098
          <-- KSTREAM-SOURCE-0000000092
        Processor: KSTREAM-WINDOWED-0000000097 (stores: [KSTREAM-OUTEROTHER-0000000099-store])
          --> KSTREAM-OUTEROTHER-0000000099
          <-- KSTREAM-SOURCE-0000000095
        Processor: KSTREAM-OUTEROTHER-0000000099 (stores: [KSTREAM-OUTERTHIS-0000000098-store])
          --> KSTREAM-MERGE-0000000100
          <-- KSTREAM-WINDOWED-0000000097
        Processor: KSTREAM-OUTERTHIS-0000000098 (stores: [KSTREAM-OUTEROTHER-0000000099-store])
          --> KSTREAM-MERGE-0000000100
          <-- KSTREAM-WINDOWED-0000000096
        Processor: KSTREAM-MERGE-0000000100 (stores: [])
          --> KSTREAM-FLATMAP-0000000101
          <-- KSTREAM-OUTERTHIS-0000000098, KSTREAM-OUTEROTHER-0000000099
        Processor: KSTREAM-FLATMAP-0000000101 (stores: [])
          --> KSTREAM-MAPVALUES-0000000102
          <-- KSTREAM-MERGE-0000000100
        Processor: KSTREAM-MAPVALUES-0000000102 (stores: [])
          --> KSTREAM-SINK-0000000103
          <-- KSTREAM-FLATMAP-0000000101
        Sink: KSTREAM-SINK-0000000103 (topic: linkStatus)
          <-- KSTREAM-MAPVALUES-0000000102

      Sub-topology: 12
        Source: KSTREAM-SOURCE-0000000104 (topics: [linkStatus])
          --> KSTREAM-KEY-SELECT-0000000105
        Processor: KSTREAM-KEY-SELECT-0000000105 (stores: [])
          --> KSTREAM-FILTER-0000000108
          <-- KSTREAM-SOURCE-0000000104
        Processor: KSTREAM-FILTER-0000000108 (stores: [])
          --> KSTREAM-SINK-0000000107
          <-- KSTREAM-KEY-SELECT-0000000105
        Sink: KSTREAM-SINK-0000000107 (topic: my-app-agg-store-repartition)
          <-- KSTREAM-FILTER-0000000108

      Sub-topology: 13
        Source: KSTREAM-SOURCE-0000000109 (topics: [my-app-agg-store-repartition])
          --> KSTREAM-AGGREGATE-0000000106
        Processor: KSTREAM-AGGREGATE-0000000106 (stores: [my-app-agg-store])
          --> KTABLE-TOSTREAM-0000000110
          <-- KSTREAM-SOURCE-0000000109
        Processor: KTABLE-TOSTREAM-0000000110 (stores: [])
          --> KSTREAM-MAP-0000000111
          <-- KSTREAM-AGGREGATE-0000000106
        Processor: KSTREAM-MAP-0000000111 (stores: [])
          --> KSTREAM-MAPVALUES-0000000112
          <-- KTABLE-TOSTREAM-0000000110
        Processor: KSTREAM-MAPVALUES-0000000112 (stores: [])
          --> KSTREAM-SINK-0000000113
          <-- KSTREAM-MAP-0000000111
        Sink: KSTREAM-SINK-0000000113 (topic: finalTargetTopic)
          <-- KSTREAM-MAPVALUES-0000000112

在负载下运行服务时,该服务被OOM杀死。

在执行测试期间,我们注意到线程膨胀(超过400个)。使用gdb,我们将它们跟踪到RocksDb:

  

427线程0x7f97a4722700(LWP 18049)“ java” 0x00007f97d9f6b9f5 in   /lib64/libpthread.so.0 426中的pthread_cond_wait @@ GLIBC_2.3.2()   线程0x7f9772fe5700(LWP 18080)“ rocksdb:dump_st ” 0x00007f97d9f6bda2   在/lib64/libpthread.so.0中的pthread_cond_timedwait @@ GLIBC_2.3.2()中   425线程0x7f97737e6700(LWP 18081)“ java” 0x00007f97d9f6b9f5 in   来自/lib64/libpthread.so.0的pthread_cond_wait @@ GLIBC_2.3.2()   线程0x7f9771fe3700(LWP 18112)“ rocksdb:dump_st ” 0x00007f97d9f6bda2   在/lib64/libpthread.so.0中的pthread_cond_timedwait @@ GLIBC_2.3.2()中   423线程0x7f97697d2700(LWP 18228)“ java” 0x00007f97d9f6b9f5 in   来自/lib64/libpthread.so.0的pthread_cond_wait @@ GLIBC_2.3.2()   线程0x7f9767fcf700(LWP 18244)“ rocksdb:dump_st ” 0x00007f97d9f6bda2   在/lib64/libpthread.so.0中的pthread_cond_timedwait @@ GLIBC_2.3.2()中   421线程0x7f97687d0700(LWP 18245)“ java” 0x00007f97d9f6b9f5 in   /lib64/libpthread.so.0 420中的pthread_cond_wait @@ GLIBC_2.3.2()   线程0x7f976cfd9700(LWP 18276)“ rocksdb:dump_st ” 0x00007f97d9f6bda2   在/lib64/libpthread.so.0中的pthread_cond_timedwait @@ GLIBC_2.3.2()中

当停止向服务的数据输入流时,进程的高内存消耗保持稳定(不会像预期的那样下降)。

我们试图禁用RockDb的块缓存以限制其内存使用(如here所述),但无济于事。

我们正在CentOS Linux版本7.3.1611(核心)上运行。 我们的机器有2个vCPU和4 GB内存。 我们的JVM配置为使用500MB。 我们的KStream版本是2.3.1

有什么想法吗?

0 个答案:

没有答案