Застрял контейнер докера Zookeeper - PullRequest
0 голосов
/ 04 марта 2019

Мы использовали zookeeper как часть нашего развертывания Kafka, а также для других целей (через docker-compose).

Иногда образ докера перестает функционировать, вплоть до docker stop zookeeperне вернется (ZK будет продолжать работать).Кроме того, docker kill -s SIGTERM не приведет к его уничтожению.

, когда это произойдет, попытки запустить zkCli из контейнера также останавливаются (команда zkCli.sh не возвращается).

Только уничтожениеСлужба Docker (на Mac приложение Docker) позволит восстановить его - но только после удаления контейнера, пока zk все еще не работает.

Есть идеи, как решить эту проблему?Чем может быть вызван такой сценарий?

1 Ответ

0 голосов
/ 04 марта 2019

В журналах контейнеров неоднократно появлялась эта ошибка, когда она находилась в таком состоянии:

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

пока все хорошо

...