国内业务方面重度使用elasticsearch的公司不是很多,我公司就是其一.   大多数是使用elk做日志收集展现.    前段时间我们遇到了个问题, 是由于docker容器最大文件打开数配置太小引起的,其实我们在linux本机已经配置了/etc/security/limits.conf .  具体问题及解决方法下面瞅瞅。


文章写的不是很严谨,欢迎来喷,另外该文后续有更新的,请到原文地址查看更新.

http://xiaorui.cc/2016/01/05/docker-ulimit%E5%BC%95%E8%B5%B7elasticsearch-too-many-open-files%E6%8A%A5%E9%94%99/


我这有个电商导出程序出现个报警信息,通过排除不是nginx tcp proxy出的问题.  通过elasticsearch heath接口判断出他的状态。我们来看下elasticsearch日志报错内容,还好提示也是相当的明显,就是Too many open files. 做过一些高并发业务的朋友一定知道这是啥报错?  ulimit 配置不当引起的. 

我们的elasticsearch是放在docker里面运行的,以前写过文章专门描述我们为什么会选择使用docker来运行elasticsearch。当然elasticsearch的data目录是在放在本机目录的。

其实我们的linux主机默认都会配置好sysctl内核参数及ulimit调参的,如果没有配置的朋友,请按照下面的方法先配置主机的ulimit.

首先在当前linux终端下执行ulimt -Hn和ulimit -Sn,可以看到当前用户允许打开文件的最大个数.

如果太小,那么可以改的大一点。打开/etc/security/limits.conf文件.(启动elasticsearch的用户为elasticsearch)
elasticsearch soft nofile 32000
elasticsearch hard nofile 32000

重新以elasticsearch用户身份登录,并执行执行ulimt -Hn和ulimit -Sn,以此验证上述配置是否生效;若设置生效,则重启Elasticsearch即可。

下面是正事:

光这么做是无效果的,docker默认是不继承主机的ulimit配置的, 所以这是个大坑。搜了相关的文章,发现很多人把haproxy nginx放在docker中,后因为ulimit配置不当,引起各种问题。

这边的docker环境是docker 1.6版本. Docker 1.6版本有两种方式配置容器的ulimit.

大多数被docker化的服务并不需要太多的nofile nproc, 但也不能使用默认配置1024. 可以使用下面的全局方式提高ulimit.  不要把全局的ulimit调大,因为有些人开发的程序实在诡异,会消耗大量的资源.  如果全局ulimit配置数值小的话,在一定程度还能限制资源。


1) 全局默认的ulimit:
docker -d –default-ulimit nproc=1024:2048
docker -d –default-ulimit nofile=20480:40960 nproc=1024:2048 xxx

2)也可以针对单个特殊的服务进行ulimit配置。
docker run -d –ulimit nofile=20480:40960 nproc=1024:2048 xxx

额外说句废话,这两天折腾了elasticsearch dockerfile集群模式…   整理后会分享给大家. 



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

大数据ElasticSearch遇到ignore_above问题

    以前有一个叫朱伟大神的人跟我聊过,凡是所谓的坑,都是因为你没看他的源码或者文档导致的。 这话听起来有道理,但问题ElasticSearch的各种文...

阅读全文

[译文] Elasticsearch的任务管理api

心血来潮,又翻译了elasticsearch的一篇文章。 今才发现elasticsearch也有了任务管理api。这任务管理可以理解为mysql的show processlist; kill %task_id ...

阅读全文

使用elasticsearch的scroll和scan解决深度分页问题

使用ElasticSearch的scroll和scan解决大数据集合问题 我的连接,http://xiaorui.cc/?p=3072 内容概要, 主要是解决在ElasticSearch中大数据集合的...

阅读全文