проблемы с ulimit -n (Too many open files)

143 views
Skip to first unread message

Max Seleznev

unread,
Apr 10, 2013, 1:43:16 PM4/10/13
to elastics...@googlegroups.com
Всем привет. Я столкнулся с проблемой что эластиксерч открывает очень много файлов

я нашел как это пофиксить http://www.elasticsearch.org/tutorials/too-many-open-files/, но проблема не решилась

я прикрепил файл лога в котором показано значение -Des.max-open-files=true и сама ошибка

до этого у меня значение было 750000 сейчас я поменял на 

/etc/security/limits.conf

elasticsearch - nofile 1048576
elasticsearch - memlock unlimited 

java - nofile 1048576
java - memlock unlimited

root - nofile 1048576
root - memlock unlimited

OC ubuntu 12.10

3 сервера с шардингом
у меня 6 индексов и в каждом по 10 шард 
общее число записей 30М

подскажите пожалуйста, как правильно настроить
es.log

Igor Motov

unread,
Apr 10, 2013, 1:53:12 PM4/10/13
to elastics...@googlegroups.com
А что 

lsof | grep inetgiant | wc -l 

говорит? 

Max Seleznev

unread,
Apr 10, 2013, 2:01:25 PM4/10/13
to elastics...@googlegroups.com
root@domU-12-31-38-04-CD-C1:~# lsof | grep inetgiant | wc -l 
3091

Max Seleznev

unread,
Apr 10, 2013, 2:05:57 PM4/10/13
to elastics...@googlegroups.com
странное поведение ulimit, после перезагрузки значение упало до 4066, хотя значение в файле /etc/security/limits.conf я не менял

Igor Motov

unread,
Apr 10, 2013, 2:10:06 PM4/10/13
to elastics...@googlegroups.com
Похоже, что это не файлы, скорее всего сокеты. Вы можете запустить lsof -p XXXX, где XXXX - id процесса с elasticsearch и посмотреть куда все эти хендлеры деваются? 

Max Seleznev

unread,
Apr 10, 2013, 2:23:30 PM4/10/13
to elastics...@googlegroups.com
ps aux

root       883  0.0  0.0  18360  1428 ?        Sl   17:54   0:00 /usr/local/share/elasticsearch/bin/service/exec/elasticsearch-linux-x86-64 /usr/local/share/elasticsearch/bin/service/elasticsearch.conf wra
root       887 31.3 36.0 6694684 2565132 ?     SLl  17:54   6:33 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -Delasticsearch-service -Des.path.home=/usr/local/share/elasticsearch -Xss256k -XX:+UseParNew

файлы приложил
883.txt
887.txt

Igor Motov

unread,
Apr 10, 2013, 2:53:45 PM4/10/13
to elastics...@googlegroups.com
Там всего 4129 хендлеров, так что похоже что ulimit так и не установился. Странно, что -Des.max-open-files=true каким-то образом сработал. 

Max Seleznev

unread,
Apr 10, 2013, 3:05:24 PM4/10/13
to elastics...@googlegroups.com
да после перезагрузки он почему то стал показывать 

до перезагрузки
[2013-04-10 17:00:27,392][INFO ][bootstrap                ] max_open_files [1048545]

после перезагрузки
[2013-04-10 17:54:19,610][INFO ][bootstrap                ] max_open_files [4066]

после перезагрузки ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 55458
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1048576
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 55458
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

cat /etc/security/limits.conf
elasticsearch - nofile 1048576
elasticsearch - memlock unlimited 

java - nofile 1048576
java - memlock unlimited

root - nofile 1048576
root - memlock unlimited

egrep -r pam_limits /etc/pam.d/
/etc/pam.d/login:session    required   pam_limits.so
/etc/pam.d/atd:session    required   pam_limits.so
/etc/pam.d/common-session:session required pam_limits.so
/etc/pam.d/common-session-noninteractive:session required pam_limits.so
/etc/pam.d/su:# session    required   pam_limits.so
/etc/pam.d/sshd:session    required     pam_limits.so
/etc/pam.d/cron:session    required   pam_limits.so

Даже не знаю  куда теперь копать

Oleksiy Kovyrin

unread,
Apr 10, 2013, 3:13:27 PM4/10/13
to elastics...@googlegroups.com
Просто добавьте вызов ulimit -n XXXXX в ваше стартап-скрипт для ES. Игрища с limits.conf - оно работает сильно мутно.

-- 
Oleksiy Kovyrin



--
Вы получили это сообщение, поскольку подписаны на группу elasticsearch-ru.
 
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес elasticsearch-...@googlegroups.com.
Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу elastics...@googlegroups.com.
Перейдите в группу по ссылке http://groups.google.com/group/elasticsearch-ru?hl=ru.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.
 
 

Igor Motov

unread,
Apr 10, 2013, 3:14:53 PM4/10/13
to elastics...@googlegroups.com
У меня установка ulimit в ubuntu всегда ассоциировалась с черной магией. :-) Может попробовать разкомментировать эту строчку?

/etc/pam.d/su:# session    required   pam_limits.so

Max Seleznev

unread,
Apr 10, 2013, 3:25:09 PM4/10/13
to elastics...@googlegroups.com
какую ОС лучше тогда использовать для  elasticsearch?

Max Seleznev

unread,
Apr 10, 2013, 3:46:38 PM4/10/13
to elastics...@googlegroups.com
Спасибо реально помогло

установил лимит в ulimit -n 1048576

а что делать если не хватит и этого лимита? число 1048576 максимальное

Oleksiy Kovyrin

unread,
Apr 10, 2013, 3:48:26 PM4/10/13
to elastics...@googlegroups.com
Честно говоря, никогда не встречал ситуаций, когда какому-либо софту не хватало миллиона дескрипторов. Я бы не беспокоился об этом.

-- 
Oleksiy Kovyrin



Igor Motov

unread,
Apr 10, 2013, 3:50:58 PM4/10/13
to elastics...@googlegroups.com
Очень многие компании используют elasticsearch на Ubuntu. Просто настройка ulimit там муторное дело. И с java-ой надо повозиться. Для стабильной работы elasticsearch нужна более-менее современная версия java, а не что-нибудь годичной давности. 

Миллиона файлов вам должно очень на долго хватить. :)

Max Seleznev

unread,
Apr 10, 2013, 4:18:21 PM4/10/13
to elastics...@googlegroups.com
а какую ОС используете для elasticsearch? у меня есть сервер с  2x intel xeon CPU x5680 @ 3.33GHz,  96GB RAM и я не знаю на нем лучше развернуть VMware и поднять 4-5 маленьких серверов или все же развернуть один но на реальном железе?

Max Seleznev

unread,
Apr 10, 2013, 4:21:23 PM4/10/13
to elastics...@googlegroups.com
спасибо за помощь 

Oleksiy Kovyrin

unread,
Apr 10, 2013, 4:27:52 PM4/10/13
to elastics...@googlegroups.com
Не уверен, что понимаю в чем смысл делать виртуальные машины и потом в них запускать ES:
- производительность: быстрее оно не станет, потому как железо по прежнему одно и тоже, зато станет медленнее за счет внутрикластерной координации
- надежность: надежнее не будет, так как по прежнему одна машина

Единственный плюс в запуске нескольких инстансов был бы в том, чтобы не превышать лимит в 30gb java heap, после которого указатели внутри JVM станут 64-битными и вы потеряете кучу памяти на этом. А, ну и, может быть, имело бы смысл запускать 2 инстанса на ящике чтобы можно было без даунтайма перерапускать их по-очереди. Но, опять же, никто не запрещает запуск 2 копий ES на одном ящике без виртуализации :-)

Так или иначе - сложно что-то советовать без знания специфики данных в индексах, их объема и тп.

-- 
Oleksiy Kovyrin



Reply all
Reply to author
Forward
0 new messages