0
메신저 카프카 작업 첫번째 초에 메시지를 생성하는 속도가 느린이며, 나는 그런 프로듀서 만든 : 당신이 매우 간단 볼 수카프카는
synchronized (obj) {
while (true){
long start = Instant.now().toEpochMilli();
for (int i=0; i< NUM_MSG_SEC ; i++)
{
PriceStreamingData data = PriceStreamingData.newBuilder()
.setUser(getRequest().getUser())
.setSecurity(getRequest().getSecurity())
.setTimestamp(Instant.now().toEpochMilli())
.setPrice(new Random().nextDouble()*200)
.build();
record = new ProducerRecord<>(topic, keyBuilder.build(data),
data);
producer.send(record,new Callback(){
@Override
public void onCompletion(RecordMetadata arg0, Exception arg1) {
counter.incrementAndGet();
if(arg1 != null){
arg1.printStackTrace();
}
}
});
}
long diffCiclo = Instant.now().toEpochMilli() - start;
long diff = Instant.now().toEpochMilli() - startTime;
System.out.println("Number of sent: " + counter.get() +
" Millisecond:" + (diff) + " - NumberOfSent/Diff(K): " + counter.get()/diff);
try {
if(diffCiclo >= 1000){
System.out.println("over 1 second: " + diffCiclo);
}
else {
obj.wait(1000 - diffCiclo);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
, 그냥 새 메시지를 만들어 보낼를 . 내가 로그가 표시되는 경우 : 처음 10 초
NumberOfSent/Diff(K)
을 내가
180k per second
이유
이 단지30k per second
60 초 동안 아주 나쁜 수행? 그리고 이미 180k로 진행중인 프로세스를 시작할 수 있습니까?
내 카프카 프로듀서 구성은 follwing을
Async producer (but also with sync producer the situation dose not change)
ACKS_CONFIG = 0
BATCH_SIZE_CONFIG = 20000
COMPRESSION_TYPE_CONFIG = none
LINGER_MS_CONFIG = 0
입니다 마지막 세부 :
NUM_MSG_SEC is set to 200000 or bigger number
'obj'에 지연을 초래하는 잠금 장치가 있습니까? isRunning()이 true를 반환하는 경우는 언제입니까? –
아무 것도 obj에 아무것도 잠그지 않습니다. 지연은 지연을 일으키는 원인이 될 수 있습니다. 지연은 어딘가에 있지만 내 코드 안에 있지 않습니다. 내 코드는 매우 간단합니다. 카프카 설정과 관련이 있다고 생각합니다. (isRunning은 항상 true입니다.) –
아마도'synchronized (obj)'바로 뒤에 log 문을 추가하여 코드가 실제로 실행 된시기를 결정하십시오. 코드가 실행되기 전에 무슨 일이 벌어지고 있는지보기 위해 디버그에서도 실행될 수 있습니다. –