Zookeeper docker容器卡住

时间:2019-03-04 08:41:49

标签: docker apache-zookeeper boot2docker

我们一直在将Zookeeper用作Kafka部署的一部分,还用于其他用途(通过docker-compose)。

有时docker映像将停止运行,直至nBOOT0=1不会返回(zk将继续运行)。 而且BOOT0不会杀死它。

发生这种情况时,尝试从容器内运行zkCli的尝试也会停止(zkCli.sh命令不会返回)。

仅杀死docker服务(在Mac上为docker app)才能恢复它-但只有在删除容器且zk仍处于关闭状态之后。

任何想法如何解决此问题? 是什么导致这种情况?

1 个答案:

答案 0 :(得分:0)

容器日志在该状态下反复出现此错误:

log4j:ERROR Failed to flush writer,
java.io.IOException: Invalid argument
    at java.io.FileOutputStream.writeBytes(Native Method)
    at java.io.FileOutputStream.write(FileOutputStream.java:326)
    at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
    at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
    at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)
    at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)
    at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
    at org.apache.log4j.helpers.QuietWriter.flush(QuietWriter.java:59)
    at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:324)
    at org.apache.log4j.RollingFileAppender.subAppend(RollingFileAppender.java:276)
    at org.apache.log4j.WriterAppender.append(WriterAppender.java:162)
    at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
    at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
    at org.apache.log4j.Category.callAppenders(Category.java:206)
    at org.apache.log4j.Category.forcedLog(Category.java:391)
    at org.apache.log4j.Category.log(Category.java:856)
    at org.slf4j.impl.Log4jLoggerAdapter.debug(Log4jLoggerAdapter.java:210)
    at org.apache.zookeeper.server.FinalRequestProcessor.processRequest(FinalRequestProcessor.java:89)
    at org.apache.zookeeper.server.SyncRequestProcessor.run(SyncRequestProcessor.java:169)

google告诉我,这很可能是由于ulimit配置错误造成的。
添加到Zookeeper的组成部分:

ulimits: 
  nofile:
    soft: 20000
    hard: 40000

到目前为止一切顺利