2015-05-14 2 views
4

У нас проблема с kafka. иногда Внезапно, без предупреждения, мы выходим из Синхронизации и начинаем получать исключения при испускании событий.kafka Синхронизация: "java.io.IOException: Слишком много открытых файлов"

исключения мы получаем это: «java.io.IOException: Слишком много открытых файлов»

, кажется, что это общая исключительная ситуация Кафки во многих случаях. мы немного расследовали это, и мы считаем, что первопричиной является попытка испускать события в какую-то тему, это не удается, потому что у kafka dosen't есть раздел для руководителя по этой теме

может кто-то помочь?

ответ

5

Я предполагаю, что вы находитесь на Linux. Если это так, то происходит то, что у вас заканчиваются дескрипторы открытых файлов. Реальный вопрос, почему это происходит.

Linux по умолчанию обычно сохраняет этот номер довольно низким. Вы можете проверить текущее значение с помощью всех ограничений:

ulimit -a | grep "open files" 

Вы можете установить это значение с помощью, опять ULIMIT:

sudo ulimit -n 4096 

Тем не менее, если хозяин Кафки в вопросе не имеет много тем/разделы его необычно поразить этот предел. Вероятно, происходит то, что в каком-то другом процессе хранятся файлы или соединения. Чтобы выяснить, в каком процессе вам придется выполнять какую-то детективную работу с lsof.

1

У меня было похоже «проблема java.io.IOException: слишком много открытых файлов» на Linux/CentOS. В моем случае, после проверки открытых fd's с isof, это была kafka-web-консоль, которая открывала слишком много соединений. Остановка, которая решила мою проблему.

0

В одном случае это происходит, когда у вас есть большой номер раздела, поскольку каждый раздел сопоставляется с каталогом в файловой системе в брокере, состоящим из двух файлов. один из них - для индекса, а другой - для данных. брокер открывает оба файла. поэтому больше номеров разделов есть больше открытых файлов. поскольку Doom сказал, что вы можете увеличить открытые файлы в Linux, но этот конфиг не является постоянным, и когда вы закрываете сеанс, этот конфиг исчезнет. и в следующем loggin, если вы проверите с этой командой

ulimit -a | grep "open files" 

вы можете увидеть более старое число. но с этой конфигурацией вы можете сделать его постоянным:

открыть этот файл:

sudo nano /etc/pam.d/common-session 

и добавьте следующую строку:

session required pam_limits.so 

после этого вы можете установить предел в limits.config, как это :

sudo nano /etc/security/limits.conf 

, а затем вы можете установить предел в этом файле Forexample

* soft nofile 80000 

или любой жесткий конфиг. после этого закройте сеанс и снова проверьте предел открытых файлов

Смежные вопросы