zeromq高水位

設置高水位的方法爲設置zeromq配置項的通用方法(zmq_setsockopt),只是設置的變量根據傳入的標識值改變,利用socket_base_t類中的setsockopt方法來設置。socket_base_t方法中有從own_t類中繼承的option_t類型的成員變量。option_t類中有發送高水位及接收高水位的成員變量。

高水位的默認值設置爲1000,單位爲消息個數

一般來講,pubsub模式的高水位不用設置基本能夠滿足需求。

如果設置conflate(合併)字段,套接字會忽略高水位設置。

低水位設置要求:

低水位必須低於高水位

低水位的值不能爲很低的值如0,因爲填充消息隊列後只有消息被讀取後再次填充,所有沒有必要報酬後方進度。

低水位不能夠設置特別高,如(hwm-1)因爲消息被讀取一個後就會允許重新寫入,然後寫入一個後繼續休眠。效率很低。

如果高水位>1024*2,

低水位=高水位-1024,

否則:

低水位= 高水位的一半

非阻塞的類型(或組播)纔可以使用高水位

在一個發佈端多個訂閱端的情況下,發送性能會下降,水位限制的壓力會減小(因爲一個連接一個水位限制),內存使用率會增加。


各種套接字水位設置區別:

     對於inproc類型的套接字,因爲不牽扯到IO線程,所以設置過程如下:

      1.在設置bind類型套接字時,檢查是否有已經連接到該地址的連接,如果有則連接到綁定的套接字上。此時,將連接端的發送發送高水位和對端的接收高水位


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章