亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    RabbitMQ 生產(chǎn)環(huán)境配置詳解

    一 rabbitmq 生產(chǎn)部署

    RabbitMQ 常用的三種自定義服務(wù)器的通用方法:

    • 配置文件 rabbitmq.conf
    • 環(huán)境變量文件 rabbitmq-env.conf
    • 補(bǔ)充配置文件 advanced.config

    rabbitmq.conf和rabbitmq-env.conf的位置

    • 在二進(jìn)制安裝中路徑是在 :安裝目錄下的/etc/rabbitmq/
    • rpm 安裝: /etc/rabbitmq/

    如果rabbitmq.conf和rabbitmq-env.conf 的兩個(gè)文件不存在,那么我們可以創(chuàng)建該文件,然后我們可以通過(guò)環(huán)境變量
    指定該文件的位置。

    補(bǔ)充 :

    • rabbitmqctl rabbitmqctl 是管理虛擬主機(jī)和用戶權(quán)限的工具
    • rabbitmq-plugins 是管理插件的工具

    1.1 rabbitmq.conf

    在rabbitmq 3.7.0 之前,rabbitmq.conf 使用了Erlang語(yǔ)法配置格式,新的版本使用了sysctl 格式.

    sysctl 語(yǔ)法:

    • 單個(gè)信息都在一行里面
    • 配置信息以key value 的形式保存。
    • ‘#’開頭表示注釋。

    配置示例文件:rabbitmq.conf.example

    配置屬性和描述(官網(wǎng)鏈接)

    屬性 描述 默認(rèn)值
    listeners 要監(jiān)聽 AMQP 0-9-1 and AMQP 1.0 的端口 listeners.tcp.default = 5672
    num_acceptors.tcp 接受tcp連接的erlang 進(jìn)程數(shù) num_acceptors.tcp = 10
    handshake_timeout AMQP 0-9-1 超時(shí)時(shí)間,也就是最大的連接時(shí)間,單位毫秒 handshake_timeout = 10000
    listeners.ssl 啟用TLS的協(xié)議 默認(rèn)值為none
    num_acceptors.ssl 接受基于TLS協(xié)議的連接的erlang 進(jìn)程數(shù) num_acceptors.ssl = 10
    ssl_options TLS 配置 ssl_options =none
    ssl_handshake_timeout TLS 連接超時(shí)時(shí)間 單位為毫秒 ssl_handshake_timeout = 5000
    vm_memory_high_watermark 觸發(fā)流量控制的內(nèi)存閾值,可以為相對(duì)值(0.5),或者絕對(duì)值 vm_memory_high_watermark.relative = 0.6 ,vm_memory_high_watermark.absolute = 2GB 默認(rèn)vm_memory_high_watermark.relative = 0.4
    vm_memory_calculation_strategy 內(nèi)存使用報(bào)告策略,assigned:使用Erlang內(nèi)存分配器統(tǒng)計(jì)信息 rss:使用操作系統(tǒng)RSS內(nèi)存報(bào)告。這使用特定于操作系統(tǒng)的方法,并可能啟動(dòng)短期子進(jìn)程。legacy:使用遺留內(nèi)存報(bào)告(運(yùn)行時(shí)認(rèn)為將使用多少內(nèi)存)。這種策略相當(dāng)不準(zhǔn)確。erlang 與legacy一樣 是為了向后兼容 vm_memory_calculation_strategy = allocated
    vm_memory_high_watermark_paging_ratio 當(dāng)內(nèi)存的使用達(dá)到了50%后,隊(duì)列開始將消息分頁(yè)到磁盤 vm_memory_high_watermark_paging_ratio = 0.5
    total_memory_available_override_value 該參數(shù)用于指定系統(tǒng)的可用內(nèi)存總量,一般不使用,適用于在容器等一些獲取內(nèi)存實(shí)際值不精確的環(huán)境 默認(rèn)未設(shè)置
    disk_free_limit Rabbitmq存儲(chǔ)數(shù)據(jù)的可用空間限制,當(dāng)?shù)陀谠撝档臅r(shí)候,將觸發(fā)流量限制,設(shè)置可參考vm_memory_high_watermark參數(shù) disk_free_limit.absolute = 50MB
    log.file.level 控制記錄日志的等級(jí),有info,error,warning,debug log.file.level = info
    channel_max 最大通道數(shù),但不包含協(xié)議中使用的特殊通道號(hào)0,設(shè)置為0表示無(wú)限制,不建議使用該值,容易出現(xiàn)channel泄漏 channel_max = 2047
    channel_operation_timeout 通道操作超時(shí),單位為毫秒 channel_operation_timeout = 15000
    heartbeat 表示連接參數(shù)協(xié)商期間服務(wù)器建議的心跳超時(shí)的值。如果兩端都設(shè)置為0,則禁用心跳,不建議禁用 heartbeat = 60
    default_vhost rabbitmq安裝后啟動(dòng)創(chuàng)建的虛擬主機(jī) default_vhost = /
    default_user 默認(rèn)創(chuàng)建的用戶名 default_user = guest
    default_pass 默認(rèn)用戶的密碼 default_pass = guest
    default_user_tags 默認(rèn)用戶的標(biāo)簽 default_user_tags.administrator = true
    default_permissions 在創(chuàng)建默認(rèn)用戶是分配給默認(rèn)用戶的權(quán)限 default_permissions.configure = .* default_permissions.read = .* default_permissions.write = .*
    loopback_users 允許通過(guò)回環(huán)地址連接到rabbitmq的用戶列表,如果要允許guest用戶遠(yuǎn)程連接(不安全)請(qǐng)將該值設(shè)置為none,如果要將一個(gè)用戶設(shè)置為僅localhost連接的話,配置loopback_users.username =true(username要替換成用戶名) loopback_users.guest = true(默認(rèn)為只能本地連接)
    cluster_formation.classic_config.nodes 設(shè)置集群節(jié)點(diǎn)cluster_formation.classic_config.nodes.1 = rabbit@hostname1
    cluster_formation.classic_config.nodes.2 = rabbit@hostname2 默認(rèn)為空,未設(shè)置
    collect_statistics 統(tǒng)計(jì)收集模式,none 不發(fā)出統(tǒng)計(jì)信息事件,coarse每個(gè)隊(duì)列連接都發(fā)送統(tǒng)計(jì)一次,fine每發(fā)一條消息的統(tǒng)計(jì)數(shù)據(jù) collect_statistics = none
    collect_statistics_interval 統(tǒng)計(jì)信息收集間隔,以毫秒為單位 collect_statistics_interval = 5000
    delegate_count 用于集群內(nèi)通信的委托進(jìn)程數(shù)。在多核的服務(wù)器上我們可以增加此值 delegate_count = 16
    tcp_listen_options 默認(rèn)的套接字選項(xiàng) tcp_listen_options.backlog = 128 …..
    hipe_compile 設(shè)置為true以使用HiPE預(yù)編譯RabbitMQ的部分,HiPE是Erlang的即時(shí)編譯器,啟用HiPE可以提高吞吐量?jī)晌粩?shù),但啟動(dòng)時(shí)會(huì)延遲幾分鐘。Erlang運(yùn)行時(shí)必須包含HiPE支持。如果不是,啟用此選項(xiàng)將不起作用。HiPE在某些平臺(tái)上根本不可用,尤其是Windows。 hipe_compile = false
    cluster_keepalive_interval 節(jié)點(diǎn)應(yīng)該多長(zhǎng)時(shí)間向其他節(jié)點(diǎn)發(fā)送keepalive消息(以毫秒為單位),keepalive的消息丟失不會(huì)被視為關(guān)閉 cluster_keepalive_interval = 10000
    queue_index_embed_msgs_below 消息的字節(jié)大小,低于該大小,消息將直接嵌入隊(duì)列索引中 bytes queue_index_embed_msgs_below = 4096
    mnesia_table_loading_retry_timeout 等待集群中Mnesia表可用的超時(shí)時(shí)間,單位毫秒 mnesia_table_loading_retry_timeout = 30000
    mnesia_table_loading_retry_limit 集群?jiǎn)?dòng)時(shí)等待Mnesia表的重試次數(shù),不適用于Mnesia升級(jí)或節(jié)點(diǎn)刪除。 mnesia_table_loading_retry_limit = 10
    mirroring_sync_batch_size 要在隊(duì)列鏡像之間同步的消息的批處理大小 mirroring_sync_batch_size = 4096
    queue_master_locator 隊(duì)列主節(jié)點(diǎn)的策略,有三大策略 min-masters,client-local,random queue_master_locator = client-local
    proxy_protocol 如果設(shè)置為true ,則連接需要通過(guò)反向代理連接,不能直連接 proxy_protocol = false
    management.listener.port rabbitmq web管理界面使用的端口 management.listener.port = 15672

    查看rabbitmq的有效配置

    rabbitmqctl environment

    1.2 advanced.config

    示例文件
    某些配置設(shè)置不可用或難以使用sysctl格式進(jìn)行配置。因此,可以使用Erlang術(shù)語(yǔ)格式的其他配置文件advanced.config
    它將與rabbitmq.conf 文件中提供的配置合并。

    配置屬性和描述(官網(wǎng)鏈接)

    屬性 描述 默認(rèn)值
    msg_store_index_module 設(shè)置隊(duì)列索引使用的模塊 {rabbit,[ {msg_store_index_module,rabbit_msg_store_ets_index} ]}
    backing_queue_module 隊(duì)列內(nèi)容的實(shí)現(xiàn)模塊。 {rabbit,[ {backing_queue_module,rabbit_variable_queue} ]}
    msg_store_file_size_limit 消息儲(chǔ)存的文件大小,現(xiàn)有的節(jié)點(diǎn)更改是危險(xiǎn)的,可能導(dǎo)致數(shù)據(jù)丟失 默認(rèn)值16777216
    trace_vhosts 內(nèi)部的tracer使用,不建議更改 {rabbit,[ {trace_vhosts,[]} ]}
    msg_store_credit_disc_bound 設(shè)置消息儲(chǔ)存庫(kù)給隊(duì)列進(jìn)程的積分,默認(rèn)一個(gè)隊(duì)列進(jìn)程被賦予4000個(gè)消息積分 {rabbit, [{msg_store_credit_disc_bound, {4000, 800}}]}
    queue_index_max_journal_entries 隊(duì)列的索引日志超過(guò)該閾值將刷新到磁盤 {rabbit, [{queue_index_max_journal_entries, 32768}]}
    lazy_queue_explicit_gc_run_operation_threshold 在內(nèi)存壓力下為延遲隊(duì)列設(shè)置的值,該值可以觸發(fā)垃圾回收和減少內(nèi)存使用,降低該值,會(huì)降低性能,提高該值,會(huì)導(dǎo)致更高的內(nèi)存消耗 {rabbit,[{lazy_queue_explicit_gc_run_operation_threshold, 1000}]}
    queue_explicit_gc_run_operation_threshold 在內(nèi)存壓力下,正常隊(duì)列設(shè)置的值,該值可以觸發(fā)垃圾回收和減少內(nèi)存使用,降低該值,會(huì)降低性能,提高該值,會(huì)導(dǎo)致更高的內(nèi)存消耗 {rabbit, [{queue_explicit_gc_run_operation_threshold, 1000}]}

    1.3 rabbitmq-env.conf

    官網(wǎng)鏈接
    通過(guò)rabbitmq-env.conf 來(lái)定義環(huán)境變量
    RABBITMQ_NODENAME 指定節(jié)點(diǎn)名稱

    屬性 描述 默認(rèn)值
    RABBITMQ_NODE_IP_ADDRESS 綁定的網(wǎng)絡(luò)接口 默認(rèn)為空字符串表示綁定本機(jī)所有的網(wǎng)絡(luò)接口
    RABBITMQ_NODE_PORT 端口 默認(rèn)為5672
    RABBITMQ_DISTRIBUTION_BUFFER_SIZE 節(jié)點(diǎn)之間通信連接的數(shù)據(jù)緩沖區(qū)大小 默認(rèn)為128000,該值建議不要使用低于64MB
    RABBITMQ_IO_THREAD_POOL_SIZE 運(yùn)行時(shí)用于io的線程數(shù) 建議不要低于32,linux默認(rèn)為128 ,windows默認(rèn)為64
    RABBITMQ_NODENAME rabbitmq節(jié)點(diǎn)名稱,集群中要注意節(jié)點(diǎn)名稱唯一 linux 默認(rèn)節(jié)點(diǎn)名為 rabbit@$hostname
    RABBITMQ_CONFIG_FILE rabbitmq 的配置文件路徑,注意不要加文件的后綴(.conf) 默認(rèn) $RABBITMQ_HOME/etc/rabbitmq/rabbitmq(二進(jìn)制安裝) /etc/rabbitmq/rabbitmq(rpm 安裝)
    RABBITMQ_ADVANCED_CONFIG_FILE advanced.config文件路徑 默認(rèn) $RABBITMQ_HOME/etc/rabbitmq/advanced(二進(jìn)制安裝) /etc/rabbitmq/advanced(rpm 安裝)
    RABBITMQ_CONF_ENV_FILE 環(huán)境變量配置文件路徑 默認(rèn) $RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf(二進(jìn)制安裝) /etc/rabbitmq/rabbitmq-env.conf(rpm 安裝)
    RABBITMQ_SERVER_CODE_PATH 在使用HiPE 模塊時(shí)需要使用 默認(rèn)為空
    RABBITMQ_LOGS 指定日志文件位置 默認(rèn)為 $RABBITMQ_HOME/etc/var/log/rabbitmq/

    網(wǎng)絡(luò)設(shè)置 http://www.rabbitmq.com/networking.html
    RABBITMQ_DISTRIBUTION_BUFFER_SIZE 節(jié)點(diǎn)間通信緩沖區(qū)大小,默認(rèn)值 128Mb,節(jié)點(diǎn)流量比較多的集群中,可以提升該值,建議該值不要低于64MB。

    tcp 緩存區(qū)大小
    下示例將AMQP 0-9-1連接的TCP緩沖區(qū)設(shè)置為192 KiB:

    tcp_listen_options.backlog = 128 tcp_listen_options.nodelay = true tcp_listen_options.linger.on = true tcp_listen_options.linger.timeout = 0 tcp_listen_options.sndbuf = 196608 tcp_listen_options.recbuf = 196608

    1.4 在生產(chǎn)環(huán)境中不適用的策略。

    官網(wǎng)鏈接

    • 1.4.1 vhost

    在生產(chǎn)中,如果rabbitmq只為單個(gè)系統(tǒng)提供服務(wù)的時(shí)候,我們使用默認(rèn)的(/)是可以的。在為多個(gè)系統(tǒng)提供的服務(wù)時(shí),我們建議使用單獨(dú)的vhost.

    • 1.4.2 user

    對(duì)于生產(chǎn)環(huán)境,請(qǐng)刪除默認(rèn)用戶(guest),默認(rèn)用戶只能從localhost 連接。
    我們可以創(chuàng)建指定權(quán)限的單獨(dú)用戶為每個(gè)應(yīng)用提供服務(wù)。對(duì)于開啟權(quán)限用戶來(lái)說(shuō),我們可以使用證書,和源ip地址過(guò)濾,和身份驗(yàn)證。來(lái)加強(qiáng)安全性。

    • 1.4.3 最大打開文件限制

    在生產(chǎn)環(huán)境我們可能需要調(diào)整一些系統(tǒng)的默認(rèn)限制,以便處理大量的并發(fā)連接和隊(duì)列。
    需要調(diào)整的值有打開的最大文件數(shù)。在生產(chǎn)環(huán)境為rabbitmq 運(yùn)行的用戶設(shè)定為65536,但是對(duì)于大多數(shù)開發(fā)環(huán)境來(lái)說(shuō),4096就已經(jīng)足夠了。

    查看默認(rèn)的打開文件的最大數(shù)量。

    ulimit -n

    更改方式:

    • 1 臨時(shí)修改
    ulimit -n 65536
    • 2 永久修改
      • 2.1如果是systemed 來(lái)進(jìn)行管理的話我們可以編輯systemed配置文件來(lái)進(jìn)行控制
      [service] LimitNOFILE=300000
      • 2.2 如果不是systemed 來(lái)進(jìn)行管理的話,我們可以更改rabbitmq的啟動(dòng)加載的環(huán)境配置文件 rabbitmq-env.conf。在里面開頭添加ulimit -S -n 4096,但該值不能超過(guò)系統(tǒng)的默認(rèn)值的最大值。

        ulimit -S -n 4096
      • 2.3 系統(tǒng)級(jí)別更改
        更改配置文件:/etc/security/limits.conf
        在文件末尾前面加入
        rabbitmq(啟動(dòng)的用戶名) - nofile 65536
        如果更改前用戶已經(jīng)登錄的話,需要重新登錄下才能生效。

    • 1.4.4 內(nèi)存
      當(dāng)rabbitmq 檢測(cè)到它使用的內(nèi)存超過(guò)系統(tǒng)的40%,它將不會(huì)接受任何新的消息,這個(gè)值是由參數(shù) vm_memory_high_watermark來(lái)控制的,默認(rèn)值是一個(gè)安全的值,修改該值需要注意。 rabbitmq 的至少需要128MB,建議vm_memory_high_watermark 值為 0.4~0..66 ,不要使用大于0.7的值。

    • 1.4.5 磁盤
      磁盤默認(rèn)的儲(chǔ)存數(shù)據(jù)閾值是50MB,當(dāng)?shù)陀谠撝档臅r(shí)候,將觸發(fā)流量限制。50MB 只適用于開發(fā)環(huán)境,生產(chǎn)環(huán)境需要調(diào)高該值,不然容易由磁盤空間不足導(dǎo)致節(jié)點(diǎn)故障,也可能導(dǎo)致數(shù)據(jù)丟失。

      在生產(chǎn)環(huán)境中我們?cè)O(shè)置的值

      • 建議的最小值 {disk_free_limit, {mem_relative, 1.0}}

      它是基于mem_relative的值,例如在具有4GB內(nèi)存的rabbitmq主機(jī)上,那么該磁盤的閾值就是4G,如果磁盤可用空間低于4G,所有生產(chǎn)者和消息都將拒絕。在允許恢復(fù)發(fā)布之前,通常需要消費(fèi)者將隊(duì)列消息消費(fèi)完。

      • 建議的更安全值 {disk_free_limit, {mem_relative, 1.5}}

      在具有4GB內(nèi)存的RabbitMQ節(jié)點(diǎn)上,如果可用磁盤空間低于6GB,則所有新消息都將被阻止,但是如果我們?cè)谕V沟臅r(shí)候rabbitmq需要儲(chǔ)存4GB的數(shù)據(jù)到磁盤,再下一次啟動(dòng)的時(shí)候,就只有2G空間了。

      • 建議的最大值 {disk_free_limit, {mem_relative, 2.0}}
        這個(gè)是最安全的值,如果你的磁盤有足夠多的空間話,建議設(shè)置該值。但該值容易觸發(fā)警告,因?yàn)樵诰哂?GB內(nèi)存的rabbitmq主機(jī)上,需要最低空間大于8G,如果你的磁盤空間比較少的話,不建議設(shè)置該值。
    • 1.4.6 連接
      少使用短連接,使用連接池或者長(zhǎng)連接。

    • 1.4.7 TLS
      建議盡可能使用TLS連接,使用TLS會(huì)對(duì)傳輸?shù)臄?shù)據(jù)加密,但是對(duì)系統(tǒng)的吞吐量產(chǎn)生很大的影響
    • -1.4.8 更改默認(rèn)端口
      我們常用的web界面的端口 15672 和AMQP 0-9-1 協(xié)議端口 5672 ,建議更改,web界面更改,配置參數(shù) management.listener.port ,AMQP 0-9-1 協(xié)議端口配置參數(shù) listeners.tcp.default。

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)