Could you share more information: - What's the number of write_num? - What's the read throughput under your test? - Does the 5 bookie servers run in same machine? - Could you check whether StringUtil.div works well? - Could you also try async write API and tell us the output?
Regards, Jiannan From: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Reply-To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Date: Friday, October 17, 2014 at 3:38 PM To: bookkeeper-user <[email protected]<mailto:[email protected]>> Subject: hi, why write speed of bookkeeper-4.3.0 is very slow? hi, I have tried bookkeeper-4.3.0 today. But its write speed is 4 entries per sec in my environment. There are 5 bookkeeper-server-4.3.0 in my env. Is there anything wrong? Test codes as follows: public void syncWriteLedger(long write_num) throws InterruptedException, BKException { byte[] pwd = "foobar".getBytes(); LedgerHandle lh = client.createLedger(3, 2, DigestType.MAC, pwd); long ledgerId = lh.getId(); System.out.println("ledgerId=" + ledgerId); System.out .println("data_len=" + ("Hello World!afdafdafdfxtyb457u8n9,7.,pbesgcerfqx" + write_num) .getBytes().length); byte[] data = ("Hello World!afdafdafdfxtyb457u8n9,7.,pbesgcerfqx" + write_num).getBytes(); long st = System.currentTimeMillis(); for (int i = 0; i < write_num; i++) { lh.addEntry(data); } long ut = System.currentTimeMillis() - st; lh.close(); double uts = StringUtil.div(ut, 1000, 3); double wspeed = StringUtil.div(write_num, uts, 2); System.out.println("ut=" + ut + " ms, write_num=" + write_num + ", write speed=" + wspeed + "/s"); LedgerHandle lh2 = client.openLedger(ledgerId, BookKeeper.DigestType.MAC, pwd); long lastEntry = lh2.getLastAddConfirmed(); st = System.currentTimeMillis(); Enumeration<LedgerEntry> entries = lh2.readEntries(0, lastEntry); while (entries.hasMoreElements()) { byte[] bytes = entries.nextElement().getEntry(); System.out.println(new String(bytes)); } ut = System.currentTimeMillis() - st; lh2.close(); uts = StringUtil.div(ut, 1000, 3); double rspeed = StringUtil.div(write_num, uts, 2); System.out.println("ut=" + ut + " ms, read_num=" + write_num + ", read speed=" + rspeed + "/s"); } ________________________________ [email protected]<mailto:[email protected]>
