上線準備
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站建設、成都網(wǎng)站設計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的洛寧網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!1 多租戶權限
應用和虛擬主機一一對應,即一個應用對應一個虛擬主機. 比如系統(tǒng)分為多個業(yè)務模塊,訂單業(yè)務對應一個虛擬主機,數(shù)據(jù)業(yè)務對應一個虛擬主機.
每個微服務實例應用對應一個用戶,當有一個應用實例多個用戶,則需要考慮安全性和便利性.
評估全部應用所需要的隊列,消息量和大小,修改用戶的資源限制配置.
2 系統(tǒng)默認參數(shù)優(yōu)化
通過rabbitmqctl status可以看到當前節(jié)點的參數(shù)信息.
root@5d8b5909379c:/# rabbitmqctl status Status of node rabbit@5d8b5909379c [{pid,228}, {running_applications, [{rabbitmq_management,"RabbitMQ Management Console","3.6.10"}, {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.6.10"}, {rabbitmq_management_agent,"RabbitMQ Management Agent","3.6.10"}, {rabbit,"RabbitMQ","3.6.10"}, {mnesia,"MNESIA CXC 138 12","4.14.2"}, {inets,"INETS CXC 138 49","6.3.4"}, {amqp_client,"RabbitMQ AMQP Client","3.6.10"}, {rabbit_common, "Modules shared by rabbitmq-server and rabbitmq-erlang-client", "3.6.10"}, {xmerl,"XML parser","1.3.12"}, {cowboy,"Small, fast, modular HTTP server.","1.0.4"}, {cowlib,"Support library for manipulating Web protocols.","1.0.2"}, {ranch,"Socket acceptor pool for TCP protocols.","1.3.0"}, {ssl,"Erlang/OTP SSL application","8.1"}, {public_key,"Public key infrastructure","1.3"}, {crypto,"CRYPTO","3.7.2"}, {os_mon,"CPO CXC 138 46","2.4.1"}, {compiler,"ERTS CXC 138 10","7.0.3"}, {syntax_tools,"Syntax tools","2.1.1"}, {asn1,"The Erlang ASN1 compiler version 4.0.4","4.0.4"}, {sasl,"SASL CXC 138 11","3.0.2"}, {stdlib,"ERTS CXC 138 10","3.2"}, {kernel,"ERTS CXC 138 10","5.1.1"}]}, {os,{unix,linux}}, {erlang_version, "Erlang/OTP 19 [erts-8.2.1] [source] [64-bit] [smp:2:2] [async-threads:64] [hipe] [kernel-poll:true]n"}, {memory, [{total,71868640}, {connection_readers,0}, {connection_writers,0}, {connection_channels,0}, {connection_other,2832}, {queue_procs,2832}, {queue_slave_procs,0}, {plugins,1327784}, {other_proc,20779968}, {mnesia,61624}, {metrics,193408}, {mgmt_db,342104}, {msg_index,42584}, {other_ets,2509304}, {binary,462472}, {code,24680786}, {atom,1033401}, {other_system,20620117}]}, {alarms,[]}, {listeners,[{clustering,25672,"::"},{amqp,5672,"::"},{http,15672,"::"}]}, {vm_memory_high_watermark,0.4}, {vm_memory_limit,3297615872}, {disk_free_limit,50000000}, {disk_free,82436243456}, {file_descriptors, [{total_limit,1048476}, {total_used,2}, {sockets_limit,943626}, {sockets_used,0}]}, {processes,[{limit,1048576},{used,322}]}, {run_queue,0}, {uptime,12495}, {kernel,{net_ticktime,60}}]
其中幾點比較重要的: running_applications 應用運行的一些參數(shù) memory 內(nèi)存參數(shù) listeners 端口相關的信息 vm_memory_high_watermark 內(nèi)存高使用率標記,超過這個值,將停止接收新消息 ,默認是0.4 vm_memory_limit 內(nèi)存限制大小 默認大小是:系統(tǒng)內(nèi)存vm_memory_high_watermark,例如我的機器是 8G內(nèi)存,那么可用的內(nèi)存為80.4=3.2G,也就是3G左右的可用內(nèi)存 disk_free_limit 默認50M disk_free 當前空閑磁盤空間 file_descriptors 文件描述符設置 processes
對于vm_memory_high_watermark官方給的建議:
托管RabbitMQ的節(jié)點至少應該有128MB的內(nèi)存可用。 推薦的vm_memory_high_watermark范圍是 0.40到0.66 不推薦使用0.7 以上的值,操作系統(tǒng)和文件系統(tǒng)必須至少占用內(nèi)存的30%,否則性能可能由于分頁而嚴重惡化。可以通過rabbitmqctl設置,例如,直接使用absolute,可以更加精確的控制使用內(nèi)存.
rabbitmqctl set_vm_memory_high_watermark 0.4 rabbitmqctl set_vm_memory_high_watermark absolute 2G
配置文件配置,例如
[{rabbit, [{vm_memory_high_watermark, {absolute, "1024MiB"}}]}].
還可以配合paging來使用,用來在到達告警值時,嘗試換頁來釋放內(nèi)存.例如,下面在內(nèi)存0.75倍時,開始換頁,到達內(nèi)存后,依然阻塞.
[{rabbit, [{vm_memory_high_watermark_paging_ratio, 0.75},{vm_memory_high_watermark, 0.4}]}].
對于disk_free_limit官方的建議:
{disk_free_limit,{mem_relative,1.0}} 最小建議磁盤空間大小應等同內(nèi)存大小.例如,在一臺4g內(nèi)存的rabbitmq主機上,如果磁盤空間大小4g,那么rabbitmq將不在接收新消息,直到隊列被消費,磁盤空間有空閑為止. {disk_free_limit,{mem_relative,1.5}} 生產(chǎn)環(huán)境下比較安全的磁盤空間大小應該是內(nèi)存的1.5倍.例如在4g內(nèi)存的rabbitmq節(jié)點上,那么需要至少6g磁盤空間,如果向磁盤寫入4g,并重啟,那么重啟后2g磁盤空間小于6g,rabbitmq將不在接收新消息. {disk_free_limit,{mem_relative,2.0}} 默認選擇 最保守的設置是使用所有的磁盤空間,如果希望能使用所有磁盤空間,就使用該設置.可以通過rabbitmqctl設置,例如 //大于set_vm_memory_high_watermark rabbitmqctl set_disk_free_limit 2G rabbitmqctl set_disk_free_limit mem_relative 1.0
配置文件配置,例如
[{rabbit, [{vm_memory_high_watermark, {absolute, "1024MiB"}}]}].
對于file_descriptors官方建議 最小50k.一般計算方式:文件描述符大小=并發(fā)連接數(shù)*95%*2+隊列數(shù).
3 安全相關 建議使用tls安全加密.要排除已有問的加密方式例如sslv3
4 使用自動重連 默認啟用,自動重連和拓撲重連.自動重連不會重新創(chuàng)建隊列等,拓撲重連則會重新創(chuàng)建隊列等.
5 集群
建議集群的節(jié)點為奇數(shù)個,3,... 建議publisher和consumer盡可能的連接一個node,減少不必要的流量損失. 磁盤存儲一半節(jié)點就足夠了.6 分區(qū)策略 如果沒有特別需要,可以使用autoheal分區(qū)策略
7 時鐘同步 rabbitmq節(jié)點之間不需要同步,但是一些插件可能依賴時鐘.可以使用NTP來保證時鐘同步.
由于個人水平有限,如有問題請指出。
分享文章:[官方翻譯]RabbitMQ生產(chǎn)上線前準備
鏈接分享:http://m.newbst.com/article42/cgggec.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站排名、域名注冊、網(wǎng)站收錄、移動網(wǎng)站建設、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)