I'm no kafka expert and I've forgotten what little I learnt, however there must be a bottleneck somewhere.
In your first instance of 3 partitions on 3 disks: - Are all partitions growing? - Are they growing about equally? - What else might be limiting aspect... -- what's the cpu activity like, perhaps it's cpu bound (unlikely but please check) -- are the disks directly attached and not sharing any write paths, or are they virtual disks over a network? (I've actually seen virtuals over a network - not pretty) -- any other limiting factors you can see or imagine? Also please in future give a fuller picture of your setup eg. OS, OS version, memory, number of cpus, what actual hardware (PCs are very different from servers), etc cheers jan On 17/05/2017, 陈 建平Chen Jianping <[email protected]> wrote: > Hi Group, > > Recently I am trying to turn Kafka write performance to improve throughput. > On my Kafka broker, there are 3 disks (7200 RPM). > For one disk, the Kafka write throughput can reach 150MB/s. In my opinion, > if I send message to topic test_p3 (which has 3 partitions located on > different disk in the same server), the whole write throughput can reach 450 > MB/s due to parallel writing disk. However the test result is still 150MB/s. > Is there any reason that multiple disk doesn’t multiply the write > throughput? And is there any bottleneck for the Kafka write throughput or I > need some configuration to update? > > I also try to test sending message to two different topic (whose partition > on different disk of that server), and the total throughput only reach 200 > MB/s instead of 300 MB/s as I expect. Below is my Kafka configuration and > setting. Thanks for any idea or advice on it:) > > ##Kafka producer setting > ./kafka-run-class org.apache.kafka.tools.ProducerPerformance --topic test_p3 > --num-records 50000000 --record-size 100 --throughput -1 --producer-props > acks=0 bootstrap.servers=localhost:9092 buffer.memory=33554432 > batch.size=16384 > > ##OS tuning setting > net.core.rmem_default = 124928 > net.core.rmem_max = 2048000 > net.core.wmem_default = 124928 > net.core.wmem_max = 2048000 > net.ipv4.tcp_rmem = 4096 87380 4194304 > net.ipv4.tcp_wmem = 4096 87380 4194304 > net.ipv4.tcp_max_tw_buckets = 262144 > net.ipv4.tcp_max_syn_backlog = 1024 > vm.oom_kill_allocating_task = 1 > vm.max_map_count = 200000 > vm.swappiness = 1 > vm.dirty_writeback_centisecs = 500 > vm.dirty_expire_centisecs = 500 > vm.dirty_ratio = 60 > vm.dirty_background_ratio = 5 > > > Thanks, > Eric > >
