ZooKeeper 관련 오류 해결

15473 단어 중간부품

오류


1.1, 오류 설명


ZooKeeper Server(FOLLOWER 및 LEADER)의 로그에 다음과 같은 오류가 표시됩니다.
2016-05-14 15:33:01,818 [myid:2] - ERROR [CommitProcessor:2:NIOServerCnxn@178] -
 Unexpected Exception:
java.nio.channels.CancelledKeyException
        at sun.nio.ch.SelectionKeyImpl.ensureValid(SelectionKeyImpl.java:55)
        at sun.nio.ch.SelectionKeyImpl.interestOps(SelectionKeyImpl.java:59)
        at org.apache.zookeeper.server.NIOServerCnxn.sendBuffer(NIOServerCnxn.ja
va:151)
        at org.apache.zookeeper.server.NIOServerCnxn.sendResponse(NIOServerCnxn.
java:1081)
        at org.apache.zookeeper.server.FinalRequestProcessor.processRequest(Fina
lRequestProcessor.java:170)
        at org.apache.zookeeper.server.quorum.CommitProcessor.run(CommitProcessor.java:74)

1.2, 오류 원인 분석


ZooKeeper Server에서 응답을 보낼 때 Socket 연결이 종료되었습니다.

1.3, 오류 해결


ZooKeeper Server에서 응답을 보낼 때 sk.isValid() 판단을 추가합니다.이상은 ZooKeeper 3.4.8 버전에서 수정된 버그입니다.

1.4, 기타


이 오류는 "ZooKeeper를 사용하여 MQ 주소 체계를 가져오기"전에 존재합니다.

오류


2.1, 오류 설명


ZooKeeper Server("FOLLOWER") 로그에 다음과 같은 오류가 표시됩니다. 이 오류가 발생하면 "FOLLOWER"인 ZooKeeper Server가 한동안 작업을 중지합니다.
2016-05-15 04:04:40,569 [myid:1] - WARN  [SyncThread:1:FileTxnLog@334] - fsync-ing the write ahead log in SyncThread:1 took 2243ms which will adversely effect operation latency. See the
ZooKeeper troubleshooting guide
2016-05-14 15:32:50,764 [myid:1] - WARN  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Follower@89] - Exception when following the leader
java.io.EOFException
        at java.io.DataInputStream.readInt(DataInputStream.java:375)
        at org.apache.jute.BinaryInputArchive.readInt(BinaryInputArchive.java:63)
        at org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:83)
        at org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:103)
        at org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:153)
        at org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
        at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:786)
2016-05-14 15:32:50,764 [myid:1] - INFO  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Follower@166] - shutdown called
java.lang.Exception: shutdown Follower
        at org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
        at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:790)

해당 ZooKeeper Server(LEADER) 로그에는 다음과 같은 오류가 표시됩니다.
2016-05-14 15:32:42,605 [myid:3] - WARN  [SyncThread:3:FileTxnLog@334] - fsync-i
ng the write ahead log in SyncThread:3 took 3041ms which will adversely effect o
peration latency. See the ZooKeeper troubleshooting guide
2016-05-14 15:32:50,764 [myid:3] - WARN  [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:218
1:LearnerHandler@687] - Closing connection to peer due to transaction timeout.
2016-05-14 15:32:50,764 [myid:3] - WARN  [LearnerHandler-/10.110.20.23:39390:Lea
rnerHandler@646] - ******* GOODBYE /10.110.20.23:39390 ********
2016-05-14 15:32:50,764 [myid:3] - WARN  [LearnerHandler-/10.110.20.23:39390:Lea
rnerHandler@658] - Ignoring unexpected exception
java.lang.InterruptedException
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterrup
tibly(AbstractQueuedSynchronizer.java:1199)
        at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantL
ock.java:312)
        at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java
:294)
        at org.apache.zookeeper.server.quorum.LearnerHandler.shutdown(LearnerHan
dler.java:656)
        at org.apache.zookeeper.server.quorum.LearnerHandler.run(LearnerHandler.
java:649)

2.2 오류 원인 분석


"FOLLOWER"가 "LEADER"와 동기화할 때 fsync 작업 시간이 너무 길어서 시간을 초과합니다.

2.3 오류 해결


'tickTime'이나'initLimit과syncLimit'의 값을 늘리거나 둘 다 증가합니다.

2.4, 기타


이 오류는 온라인에서 "ZooKeeper를 사용하여 MQ 주소 방안을 가져오기"전에도 존재했습니다. 단지 이렇게 높은 주파수는 없었을 뿐입니다. "ZooKeeper를 사용하여 MQ 주소 방안을 가져오기"를 시작하면서 ZooKeeper 서버 간의 동기화 데이터량이 증가하고 ZooKeeper 서버의 부하가 가중되어 결국 높은 주파수로 인해 상기 오류가 발생했습니다.
참고 문헌: [1]https://mail-archives.apache.org/mod_mbox/zookeeper-dev/201602.mbox/%3CJIRA.12743135.1411381021000.319520.1454726679959@Atlassian.JIRA%3E [2]https://issues.apache.org/jira/browse/ZOOKEEPER-1237

좋은 웹페이지 즐겨찾기