<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 41  文章 - 7  trackbacks - 0
    <2016年7月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    原文:http://www.rabbitmq.com/memory.html
    RabbitMQ服務器在啟動時以及abbitmqctl set_vm_memory_high_watermark fraction 執行時,會檢查計算機的RAM總大小. 默認情況下下, 當 RabbitMQ server 的使用量超過RAM的40% ,它就會發出內存警報,并阻塞所有連接. 一旦內存警報清除 (如,服務器將消息轉存于磁盤,或者將消息投遞給clients),服務又地恢復.
    默認內存閥值設置為已安裝RAM的40%. 注意這并不會阻止RabbitMQ server使用內存量超過40%, 它只是為了壓制發布者. Erlang的垃圾回收器最壞情況下,可使用配置內存的2倍(默認情況下t, RAMr的80%). 因此強制建議開啟OS swap或page files .
    32位架構傾向于每一個進程有2GB的內存限制. 64位架構的一般實現(i.e. AMD64 和 Intel EM64T) 只允許每個進程為256TB. 64-位 Windows 限制為8TB. 但是,請注意,即使是64位操作系統下,一個32位的過程往往只有一個2GB的最大地址空間。
    配置內存閥值
    內存閥值可通過編輯configuration file來配置.下面的例子將閥值設為默認值0.4:
    [{rabbit, [{vm_memory_high_watermark, 0.4}]}].
    默認值0.4 代表的是已安裝RAM的 40% , 有時候還更小.如:在 32位平臺中,如果你安裝有4GB RAM , 4GB 的40% 是 1.6GB, 但是 32-位 Windows 正常情況下限制進程為2GB,因此實際閥值是2GB的40% (即820MB).
    另外, 內存閥值也可以設置為絕對值. 下面的例子將閥值設為了1073741824 字節 (1024 MB):
    [{rabbit, [{vm_memory_high_watermark, {absolute, 1073741824}}]}].
    同例, 也可使用內存單位:
    [{rabbit, [{vm_memory_high_watermark, {absolute, "1024MiB"}}]}].
    如果絕對上限大于了安裝的RAM可用的虛擬地址空間, 閥值上限會略小.
    當RabbitMQ服務器啟動時,內存限制將追加到RABBITMQ_NODENAME.log 文件中:
    =INFO REPORT==== 29-Oct-2009::15:43:27 === Memory limit set to 2048MB.
    內存限制也可以使用rabbitmqctl status命令查詢
    其閥值也可以在broker運行時,通過rabbitmqctl set_vm_memory_high_watermark fraction 命令或 rabbitmqctl set_vm_memory_high_watermark absolute memory_limit 命令修改. 內存單位也可以在命令中使用. 此命令會在broker重啟后生效. 當執行此命令時,內存限制可能會改變熱插拔RAM,而不會發生報警,這是因為需要全部數量的系統RAM.
    禁止所有發布
    其值為0時,會立即觸發報警并禁用所有發布 (當需要禁用全局發布時,這可能是有用的); use rabbitmqctl set_vm_memory_high_watermark 0.
    限制的地址空間
    當在64位操作系統中運行32位 Erlang VM時,(or a 32 bit OS with PAE), 可用地址內存是受限制的. 服務器探測到后會記錄像下邊的日志消息:
    =WARNING REPORT==== 19-Dec-2013::11:27:13 === Only 2048MB of 12037MB memory usable due to limited address space. Crashes due to memory exhaustion are possible - see http://www.rabbitmq.com/memory.html#address-space
    內存報警系統是不完美的.雖然停止發布通常會防止任何進一步的內存使用,但可能有其他東西繼續增加內存使用。通常情況下,當這種情況發生時,物理內存耗盡,操作系統將開始交換。但是當運行一個有限的地址空間,超過限制的運行會導致虛擬機崩潰。
    因此強制建議在在64位操作系統上運行64位的Erlang VM.
    配置分頁閾值
    在broker達到最高水位阻塞發布者之前,它會嘗試將隊列內容分頁輸出到磁盤上來釋放內存. 持久化和瞬時消息都會分頁輸出 (已經在磁盤上的持久化消息會被趕出內存).
    默認情況下,在達最高水位的50%時,就會發生這種情況. (即,默認最高水位為0.4, 這會在內存使用達到20%時就會發生). 要修改此值,可修改vm_memory_high_watermark_paging_ratio 配置的0.5默認值. 例如:
    [{rabbit, [{vm_memory_high_watermark_paging_ratio, 0.75}, {vm_memory_high_watermark, 0.4}]}].
    上面的配置表示在內存使用達到30%時,就會啟動,40%的時候會阻塞發布者.
    也可以將vm_memory_high_watermark_paging_ratio 值設為大于1.0的值.在這種情況下,隊列不會把它的內容分頁到磁盤上.如果這引起了內存報警關閉,那么生產者會如上面預期的一樣被阻塞.
    未確認的平臺
    如果RabbitMQ服務器不能識別你的系統,它將在RABBITMQ_NODENAME.log 文件中追加警告.
    然后它會假設安裝了超過了1GB的RAM:
    =WARNING REPORT==== 29-Oct-2009::17:23:44 === Unknown total memory size for your OS {unix,magic_homebrew_os}. Assuming memory size is 1024MB.
    在這種情況下,vm_memory_high_watermark 配置值假設為1GB RAM. 在 vm_memory_high_watermark 默認設為 0.4的情況下, RabbitMQ的內存閥值設為了410MB, 因此當RabbitMQ使用了多于410M內存時,它會阻塞生產者.因此當RabbitMQ不能識別你的平臺時,如果你實際有8GB RAM,并且你想讓RabbitMQ內存使用量超過3GB阻塞生產者,你可以設置vm_memory_high_watermark為3.
    推薦RAM 水位設置,可參考Production Checklist.

    posted on 2016-07-30 15:05 胡小軍 閱讀(7961) 評論(0)  編輯  收藏 所屬分類: RabbitMQ
    主站蜘蛛池模板: 免费人成动漫在线播放r18| 日本免费一区二区三区四区五六区 | 亚洲精品国产精品乱码不卡√| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 久久久久亚洲AV无码网站| 最新仑乱免费视频| 一级做a爰片久久毛片免费陪| 亚洲成AV人片在线观看无| 成年女人免费视频播放体验区| 午夜免费国产体验区免费的| 亚洲欧洲日本国产| 高清在线亚洲精品国产二区| 亚洲黄色免费在线观看| 欧洲美女大片免费播放器视频| 亚洲综合男人的天堂色婷婷| 亚洲&#228;v永久无码精品天堂久久| 久久免费视频99| 免费一级全黄少妇性色生活片 | 亚洲国产精品久久网午夜| 亚洲成a人片在线观看老师| 91成人在线免费视频| 一区二区三区免费在线视频| 亚洲一区二区三区在线| 亚洲中久无码不卡永久在线观看| 成人毛片免费视频| 99爱免费观看视频在线| 一个人免费观看www视频| 亚洲中文字幕无码mv| 亚洲天堂中文字幕| 亚洲午夜精品第一区二区8050| 免费a级毛片无码a∨蜜芽试看| 最好免费观看高清在线| 色吊丝性永久免费看码| 亚洲熟妇AV一区二区三区浪潮| 色播亚洲视频在线观看| 亚洲中文字幕无码一区二区三区| 国产成人高清精品免费鸭子| 成人免费毛片内射美女-百度| 18禁美女黄网站色大片免费观看| 中文字幕乱码一区二区免费| 一级一看免费完整版毛片|