[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13999334#comment-13999334
 ] 

Michi Mutsuzaki commented on ZOOKEEPER-885:
-------------------------------------------

I recently tested this with 3.4.5. On my setup with 6 second session timeout, 
the client doesn't get disconnected even with 100% disk utilization (using 
iostat) when there is no write traffic to ZooKeeper. When there is write 
traffic, the connection starts becoming flaky around 80~90% disk utilization.

We could make the disconnect timeout (2/3 of the session timeout) configurable. 
The client can keep sending ping to avoid session expiry even if the ping 
responses get blocked behind a slow write because the session timestamp gets 
updated as soon as the server receives the ping request. You could also have an 
additional mechanism for detecting server failures using a 4 letter word 
command, although this would put additional load to the server.

I don't have bandwidth to do this for 3.5.0 though. Let me know if anybody is 
interested in working on this. Otherwise, I'll push this to 3.6.0.

> Zookeeper drops connections under moderate IO load
> --------------------------------------------------
>
>                 Key: ZOOKEEPER-885
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-885
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.2.2, 3.3.1
>         Environment: Debian (Lenny)
> 1Gb RAM
> swap disabled
> 100Mb heap for zookeeper
>            Reporter: Alexandre Hardy
>            Priority: Critical
>             Fix For: 3.5.0
>
>         Attachments: WatcherTest.java, benchmark.csv, tracezklogs.tar.gz, 
> tracezklogs.tar.gz, zklogs.tar.gz
>
>
> A zookeeper server under minimum load, with a number of clients watching 
> exactly one node will fail to maintain the connection when the machine is 
> subjected to moderate IO load.
> In a specific test example we had three zookeeper servers running on 
> dedicated machines with 45 clients connected, watching exactly one node. The 
> clients would disconnect after moderate load was added to each of the 
> zookeeper servers with the command:
> {noformat}
> dd if=/dev/urandom of=/dev/mapper/nimbula-test
> {noformat}
> The {{dd}} command transferred data at a rate of about 4Mb/s.
> The same thing happens with
> {noformat}
> dd if=/dev/zero of=/dev/mapper/nimbula-test
> {noformat}
> It seems strange that such a moderate load should cause instability in the 
> connection.
> Very few other processes were running, the machines were setup to test the 
> connection instability we have experienced. Clients performed no other read 
> or mutation operations.
> Although the documents state that minimal competing IO load should present on 
> the zookeeper server, it seems reasonable that moderate IO should not cause 
> problems in this case.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to