kafka 성능 테스트 도구 사용 과정 에서 의 각종 작은 상황
27631 단어 kafka
이번에 사 용 된 카 프 카 버 전 은 카 프 카 2.2.0 입 니 다.
usage: producer-performance [-h] --topic TOPIC --num-records NUM-RECORDS
[--payload-delimiter PAYLOAD-DELIMITER]
--throughput THROUGHPUT
[--producer-props PROP-NAME=PROP-VALUE [PROP-NAME=PROP-VALUE ...]] //
[--producer.config CONFIG-FILE] // /config/producer.properties,
[--print-metrics]
[--transactional-id TRANSACTIONAL-ID]
[--transaction-duration-ms TRANSACTION-DURATION]
(--record-size RECORD-SIZE |
--payload-file PAYLOAD-FILE)
This tool is used to verify the producer performance.
optional arguments:
-h, --help show this help message and exit
--topic TOPIC produce messages to this topic
--num-records NUM-RECORDS
number of messages to produce
--payload-delimiter PAYLOAD-DELIMITER
provides delimiter to be used when --payload-file
is provided. Defaults to new line. Note that this
parameter will be ignored if --payload-file is
not provided. (default:
)
--throughput THROUGHPUT
throttle maximum message throughput to
*approximately* THROUGHPUT messages/sec
--producer-props PROP-NAME=PROP-VALUE [PROP-NAME=PROP-VALUE ...]
kafka producer related configuration properties
like bootstrap.servers,client.id etc. These
configs take precedence over those passed via --
producer.config.
--producer.config CONFIG-FILE
producer config properties file.
--print-metrics print out metrics at the end of the test.
(default: false)
--transactional-id TRANSACTIONAL-ID
The transactionalId to use if transaction-
duration-ms is > 0. Useful when testing the
performance of concurrent transactions. (default:
performance-producer-default-transactional-id)
--transaction-duration-ms TRANSACTION-DURATION
The max age of each transaction. The
commitTransaction will be called after this time
has elapsed. Transactions are only enabled if
this value is positive. (default: 0)
either --record-size or --payload-file must be specified but not both.
--record-size RECORD-SIZE
message size in bytes. Note that you must provide
exactly one of --record-size or --payload-file.
--payload-file PAYLOAD-FILE
file to read the message payloads from. This
works only for UTF-8 encoded text files. Payloads
will be read from this file and a payload will be
randomly selected when sending messages. Note
that you must provide exactly one of --record-
size or --payload-file.
Option Description
------ -----------
--broker-list <String: host> REQUIRED: The server(s) to connect to.
--consumer.config <String: config file> Consumer config properties file.
--date-format <String: date format> The date format to use for formatting
the time field. See java.text.
SimpleDateFormat for options.
(default: yyyy-MM-dd HH:mm:ss:SSS)
--fetch-size <Integer: size> The amount of data to fetch in a
single request. (default: 1048576)
--from-latest If the consumer does not already have
an established offset to consume
from, start with the latest message
present in the log rather than the
earliest message.
--group <String: gid> The group id to consume on. (default:
perf-consumer-61669)
--help Print usage.
--hide-header If set, skips printing the header for
the stats
--messages <Long: count> REQUIRED: The number of messages to
send or consume
--num-fetch-threads <Integer: count> Number of fetcher threads. (default: 1)
--print-metrics Print out the metrics.
--reporting-interval <Integer: Interval in milliseconds at which to
interval_ms> print progress info. (default: 5000)
--show-detailed-stats If set, stats are reported for each
reporting interval as configured by
reporting-interval
--socket-buffer-size <Integer: size> The size of the tcp RECV size.
(default: 2097152)
--threads <Integer: count> Number of processing threads.
(default: 10)
--timeout [Long: milliseconds] The maximum allowed time in
milliseconds between returned
records. (default: 10000)
--topic <String: topic> REQUIRED: The topic to consume from.
2.kafka 생산자 성능 테스트 도구 사용 과정 에서 의 오류
잘못
설명:사용 명령
/kafka-producer-perf-test.sh --topic test --num-records 100000 --record-size 67108864 --throughput 20000 --producer-props bootstrap.servers=yourIP:9092 //record size 64M
오류
org.apache.kafka.common.errors.RecordTooLargeException: The message is 67108864 bytes when serialized which is larger than the maximum request size you have configured with the max.request.size configuration.
org.apache.kafka.common.errors.RecordTooLargeException: The message is 67108864 bytes when serialized which is larger than the total memory buffer you have configured with the buffer.memory configuration.
org.apache.kafka.common.errors.RecordTooLargeException: The request included a message larger than the max message size the server will accept
해결:오류 알림 에 따라 다음 설정 매개 변수 1,producer.properties 를 수정 해 야 합 니 다.
max.request.size
기본 값 은 1M 입 니 다.상기 record size 는 64M 이기 때문에 64M 이상 설정 하면 됩 니 다.해당 하 는 설정message.max.bytes
(max.request.size 설정 의 size 보다 크 도록 보장 해 야 합 니 다)buffer.memory
기본 값 은 32M 이 고 64M 이상으로 수정 하면 됩 니 다message.max.bytes
기본 값 은 약 0.95M(1000012 byte)입 니 다.max.request.size 보다 커 야 합 니 다.물론 클 러 스 터 상황 에서 성능 테스트 를 하고 사본 이 있다 면 해당 하 는 재 설정 매개 변수replica.fetch.max.bytes
(필요 와message.max.bytes
차이 가 많 지 않 으 면 사본 이 빠르게 동기 화 될 수 있 습 니 다)설명:수정
buffer.memory
이1G
일 때 다음 과 같은 오류 가 발생 합 니 다.java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
at org.apache.kafka.clients.producer.internals.BufferPool.allocateByteBuffer(BufferPool.java:219)
at org.apache.kafka.clients.producer.internals.BufferPool.safeAllocateByteBuffer(BufferPool.java:200)
at org.apache.kafka.clients.producer.internals.BufferPool.allocate(BufferPool.java:183)
at org.apache.kafka.clients.producer.internals.RecordAccumulator.append(RecordAccumulator.java:210)
at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:904)
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:843)
at org.apache.kafka.tools.ProducerPerformance.main(ProducerPerformance.java:143)
해결:오류 알림 에 따라 자바 힙 스페이스 를 수정 하고 kafka-producer-perf-test.sh 를 수정 하여 jvm 을 4G 로 변경 합 니 다.
vim /bin/kafka-producer-perf-test.sh
#########
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx512M" // -Xmx512M -Xmx4G
fi
exec $(dirname $0)/kafka-run-class.sh org.apache.kafka.tools.ProducerPerformance "$@"
물론 전체 클 러 스 터 의 jvm heap space 를 수정 하려 면
kafka-run-class.sh
과kafka-server-start.sh
에 해당 하 는 항목 을 수정 하면 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Cloud를 사용한 기능적 Kafka - 1부지금까지 찾을 수 없었던 Spring Cloud Kafka의 작업 데모를 만들기 위해 이 기사를 정리했습니다. Confluent 스키마 레지스트리 7.1.0 이 기사는 먼저 Spring Cloud Stream을 사용...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.