(1).通用參數前端
CONNECT_TIMEOUT_MILLIS :
Netty參數,鏈接超時毫秒數,默認值30000毫秒即30秒。
MAX_MESSAGES_PER_READ
Netty參數,一次Loop讀取的最大消息數,對於ServerChannel或者NioByteChannel,默認值爲16,其餘Channel默認值爲1。默認值這樣設置,是由於:ServerChannel須要接受足夠多的鏈接,保證大吞吐量,NioByteChannel能夠減小沒必要要的系統調用select。
WRITE_SPIN_COUNT
Netty參數,一個Loop寫操做執行的最大次數,默認值爲16。也就是說,對於大數據量的寫操做至多進行16次,若是16次仍沒有所有寫完數據,此時會提交一個新的寫任務給EventLoop,任務將在下次調度繼續執行。這樣,其餘的寫請求才能被響應不會由於單個大數據量寫請求而耽誤。
ALLOCATOR
Netty參數,ByteBuf的分配器,默認值爲ByteBufAllocator.DEFAULT,4.0版本爲UnpooledByteBufAllocator,4.1版本爲PooledByteBufAllocator。該值也可使用系統參數io.netty.allocator.type配置,使用字符串值:"unpooled","pooled"。
RCVBUF_ALLOCATOR
Netty參數,用於Channel分配接受Buffer的分配器,默認值爲AdaptiveRecvByteBufAllocator.DEFAULT,是一個自適應的接受緩衝區分配器,能根據接受到的數據自動調節大小。可選值爲FixedRecvByteBufAllocator,固定大小的接受緩衝區分配器。
AUTO_READ
Netty參數,自動讀取,默認值爲True。Netty只在必要的時候才設置關心相應的I/O事件。對於讀操做,須要調用channel.read()設置關心的I/O事件爲OP_READ,這樣如有數據到達才能讀取以供用戶處理。該值爲True時,每次讀操做完畢後會自動調用channel.read(),從而有數據到達便能讀取;不然,須要用戶手動調用channel.read()。須要注意的是:當調用config.setAutoRead(boolean)方法時,若是狀態由false變爲true,將會調用channel.read()方法讀取數據;由true變爲false,將調用config.autoReadCleared()方法終止數據讀取。
WRITE_BUFFER_HIGH_WATER_MARK
Netty參數,寫高水位標記,默認值64KB。若是Netty的寫緩衝區中的字節超過該值,Channel的isWritable()返回False。
WRITE_BUFFER_LOW_WATER_MARK
Netty參數,寫低水位標記,默認值32KB。當Netty的寫緩衝區中的字節超太高水位以後若降低到低水位,則Channel的isWritable()返回True。寫高低水位標記使用戶能夠控制寫入數據速度,從而實現流量控制。推薦作法是:每次調用channl.write(msg)方法首先調用channel.isWritable()判斷是否可寫。
MESSAGE_SIZE_ESTIMATOR
Netty參數,消息大小估算器,默認爲DefaultMessageSizeEstimator.DEFAULT。估算ByteBuf、ByteBufHolder和FileRegion的大小,其中ByteBuf和ByteBufHolder爲實際大小,FileRegion估算值爲0。該值估算的字節數在計算水位時使用,FileRegion爲0可知FileRegion不影響高低水位。
SINGLE_EVENTEXECUTOR_PER_GROUP
Netty參數,單線程執行ChannelPipeline中的事件,默認值爲True。該值控制執行ChannelPipeline中執行ChannelHandler的線程。若是爲Trye,整個pipeline由一個線程執行,這樣不須要進行線程切換以及線程同步,是Netty4的推薦作法;若是爲False,ChannelHandler中的處理過程會由Group中的不一樣線程執行。
(2).SocketChannel參數
SO_RCVBUF
Socket參數,TCP數據接收緩衝區大小。該緩衝區即TCP接收滑動窗口,linux操做系統可以使用命令:cat /proc/sys/net/ipv4/tcp_rmem查詢其大小。通常狀況下,該值可由用戶在任意時刻設置,但當設置值超過64KB時,須要在鏈接到遠端以前設置。
SO_SNDBUF
Socket參數,TCP數據發送緩衝區大小。該緩衝區即TCP發送滑動窗口,linux操做系統可以使用命令:cat /proc/sys/net/ipv4/tcp_smem查詢其大小。
TCP_NODELAY
TCP參數,當即發送數據,默認值爲Ture(Netty默認爲True而操做系統默認爲False)。該值設置Nagle算法的啓用,改算法將小的碎片數據鏈接成更大的報文來最小化所發送的報文的數量,若是須要發送一些較小的報文,則須要禁用該算法。Netty默認禁用該算法,從而最小化報文傳輸延時。
SO_KEEPALIVE
Socket參數,鏈接保活,默認值爲False。啓用該功能時,TCP會主動探測空閒鏈接的有效性。能夠將此功能視爲TCP的心跳機制,須要注意的是:默認的心跳間隔是7200s即2小時。Netty默認關閉該功能。
SO_REUSEADDR
Socket參數,地址複用,默認值False。有四種狀況可使用:(1).當有一個有相同本地地址和端口的socket1處於TIME_WAIT狀態時,而你但願啓動的程序的socket2要佔用該地址和端口,好比重啓服務且保持先前端口。(2).有多塊網卡或用IP Alias技術的機器在同一端口啓動多個進程,但每一個進程綁定的本地IP地址不能相同。(3).單個進程綁定相同的端口到多個socket上,但每一個socket綁定的ip地址不一樣。(4).徹底相同的地址和端口的重複綁定。但這隻用於UDP的多播,不用於TCP。
SO_LINGER
Socket參數,關閉Socket的延遲時間,默認值爲-1,表示禁用該功能。-1表示socket.close()方法當即返回,但OS底層會將發送緩衝區所有發送到對端。0表示socket.close()方法當即返回,OS放棄發送緩衝區的數據直接向對端發送RST包,對端收到復位錯誤。非0整數值表示調用socket.close()方法的線程被阻塞直到延遲時間到或發送緩衝區中的數據發送完畢,若超時,則對端會收到復位錯誤。
IP_TOS
IP參數,設置IP頭部的Type-of-Service字段,用於描述IP包的優先級和QoS選項。
ALLOW_HALF_CLOSURE
Netty參數,一個鏈接的遠端關閉時本地端是否關閉,默認值爲False。值爲False時,鏈接自動關閉;爲True時,觸發ChannelInboundHandler的userEventTriggered()方法,事件爲ChannelInputShutdownEvent。
(3).ServerSocketChannel參數
SO_RCVBUF 已說明,須要注意的是:當設置值超過64KB時,須要在綁定到本地端口前設置。該值設置的是由ServerSocketChannel使用accept接受的SocketChannel的接收緩衝區。
SO_REUSEADDR 已說明 SO_BACKLOG Socket參數,服務端接受鏈接的隊列長度,若是隊列已滿,客戶端鏈接將被拒絕。默認值,Windows爲200,其餘爲128。
(4).DatagramChannel參數
SO_BROADCAST: Socket參數,設置廣播模式。linux
SO_RCVBUF: 已說明算法
SO_SNDBUF:已說明socket
SO_REUSEADDR:已說明tcp
IP_MULTICAST_LOOP_DISABLED:
對應IP參數IP_MULTICAST_LOOP,設置本地迴環接口的多播功能。因爲IP_MULTICAST_LOOP返回True表示關閉,因此Netty加上後綴_DISABLED防止歧義。oop
IP_MULTICAST_ADDR:
對應IP參數IP_MULTICAST_IF,設置對應地址的網卡爲多播模式。大數據
IP_MULTICAST_IF:
對應IP參數IP_MULTICAST_IF2,同上但支持IPV6。操作系統
IP_MULTICAST_TTL:
IP參數,多播數據報的time-to-live即存活跳數。.net
IP_TOS:
已說明線程
DATAGRAM_CHANNEL_ACTIVE_ON_REGISTRATION: Netty參數,DatagramChannel註冊的EventLoop即表示已激活。