1.file descriptorslinux
对于linux而言,全部对设备和文件的操做都使用文件描述符来进行的。文件描述符是一个非负的整数,并发
它是一个索引值,指向内核中每一个进程打开文件的记录表。当打开一个现存文件或建立一个新文件时,函数
内核就向进程返回一个文件描述符;当须要读写文件时,也须要把文件描述符做为参数传递给相应的函数。
为何Linux内核对文件句柄数、线程和进程的最大打开数进行了限制?以及若是咱们把它调的太大,会产生什么样的后果?spa
最主要的是资源问题,为防止某一单一进程打开过多文件描述符而耗尽系统资源,对进程打开文件数作了限制;操作系统
2.控制linux上的系统限制
运行生产工做负载的RabbitMQ安装可能须要系统限制和内核参数调整,以便处理大量并发链接和队列。线程
须要调整的主要设置是打开文件的最大数量,也称为ulimit -n。许多操做系统上的默认值对于消息传递代理来讲过低(例如,在几个Linux发行版上为1024)。代理
咱们建议在生产环境中为用户rabbitmq容许至少65536个文件描述符。对于大多数开发工做负载而言,4096应该足够了。server
3. file descriptors永久修改方法blog
#vi /etc/security/limits.conf 底部添加索引
* soft nofile 65535
* hard nofile 65535
#ulimit -n 65535
#ulimit -a
#rabbitmqctl stop
#rabbitmq-server -detached