kafka 성능 테스트 도구 사용 과정 에서 의 각종 작은 상황

27631 단어 kafka
1.kafka 성능 테스트 도구–help
이번에 사 용 된 카 프 카 버 전 은 카 프 카 2.2.0 입 니 다.
  • kafka-producer-perf-test.sh --help
  • 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.
  • kafka-consumer-perf-test.sh --help
  • 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 이상으로 수정 하면 됩 니 다
  • 2、server.properties
  • message.max.bytes기본 값 은 약 0.95M(1000012 byte)입 니 다.max.request.size 보다 커 야 합 니 다.물론 클 러 스 터 상황 에서 성능 테스트 를 하고 사본 이 있다 면 해당 하 는 재 설정 매개 변수replica.fetch.max.bytes(필요 와message.max.bytes차이 가 많 지 않 으 면 사본 이 빠르게 동기 화 될 수 있 습 니 다)
  • 잘못
    설명:수정buffer.memory1G일 때 다음 과 같은 오류 가 발생 합 니 다.
    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.shkafka-server-start.sh에 해당 하 는 항목 을 수정 하면 됩 니 다.

    좋은 웹페이지 즐겨찾기