我们一直在将Zookeeper用作Kafka部署的一部分,还用于其他用途(通过docker-compose)。
有时docker映像将停止运行,直至nBOOT0=1
不会返回(zk将继续运行)。
而且BOOT0
不会杀死它。
发生这种情况时,尝试从容器内运行zkCli的尝试也会停止(zkCli.sh命令不会返回)。
仅杀死docker服务(在Mac上为docker app)才能恢复它-但只有在删除容器且zk仍处于关闭状态之后。
任何想法如何解决此问题? 是什么导致这种情况?
答案 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
到目前为止一切顺利