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