對官方文件Networking的閱讀筆記。
ES叢集中的節點,支援處理兩類通訊平面
- 叢集內節點之間的通訊,官方文件稱之為transport layer。
- 叢集外的通訊,處理客戶端下發的請求,比如資料的CRUD,檢索等,官方文件稱之為HTTP layer。
對於這兩個平面公共的配置,配置引數可以使用network.*
。
針對transport layer的配置引數,可以使用transport.*
。
針對HTTP layer的配置引數,可以使用http.*
。
引數 | network | http | transport | remote_cluster | 說明 |
---|---|---|---|---|---|
host | network.host | http.host | transport.host | remote_cluster.host | 業務的監聽地址。 |
bind_host | network.bind_host | http.bind_host | transport.bind_host | remote_cluster.bind_host | 預設值與host相同。 |
publish_host | network.publish_host | http.publish_host | transport.publish_host | remote_cluster.publish_host | 預設值與host相同。 |
publish_port | N/A | http.publish_port | transport.publish_port | remote_cluster.publish_port | |
port | N/A | http.port | transport.port | remote_cluster.port | 業務的監聽埠。 |
tcp.keep_alive | network.tcp.keep_alive | http.tcp.keep_alive | transport.tcp.keep_alive | remote_cluster.tcp.keep_alive | TCP socket的SO_KEEPALIVE引數,預設值為true。 |
tcp.keep_idle | network.tcp.keep_idle | http.tcp.keep_idle | transport.tcp.keep_idle | remote_cluster.tcp.keep_idle | TCP socket的TCP_KEEPIDLE引數,預設值為-1。 |
tcp.keep_interval | network.tcp.keep_interval | http.tcp.keep_interval | transport.tcp.keep_interval | remote_cluster.tcp.keep_interval | TCP socket的TCP_KEEPINTVL引數,預設值為-1。 |
tcp.keep_count | network.tcp.keep_count | http.tcp.keep_count | transport.tcp.keep_count | remote_cluster.tcp.keep_count | TCP socket的TCP_KEEPCNT引數,預設值為-1。 |
tcp.no_delay | network.tcp.no_delay | http.tcp.no_delay | transport.tcp.no_delay | remote_cluster.tcp.no_delay | TCP socket的TCP_NODELAY引數,預設值為true。詳細說明見wiki。 |
tcp.reuse_address | network.tcp.reuse_address | http.tcp.reuse_address | transport.tcp.reuse_address | remote_cluster.tcp.reuse_address | TCP socket的SO_REUSEADDR引數,Windows平臺的預設值為false,其它平臺的預設值為true。 |
tcp.send_buffer_size | network.tcp.send_buffer_size | http.tcp.send_buffer_size | transport.tcp.send_buffer_size | remote_cluster.tcp.send_buffer_size | TCP的傳送緩衝區的大小,預設值為-1,表示使用系統的預設值。 |
tcp.receive_buffer_size | network.tcp.receive_buffer_size | http.tcp.receive_buffer_size | transport.tcp.receive_buffer_size | remote_cluster.tcp.receive_buffer_size | TCP的接收緩衝區的大小,預設值為-1,表示使用系統的預設值。 |
compression | N/A | http.compression | transport.compression | N/A | 壓縮。 |
transport獨有的引數:
- transport.connect_timeout
- transport.compress
- transport.compression_scheme
壓縮演算法,可選值包括deflate或者lz4,預設值為lz4。 - transport.ping_schedule
指示傳送業務心跳的週期,預設值為-1,表示不傳送業務心跳。
http獨有的引數:
-
http.max_content_length
HTTP請求訊息體的長度的最大值,預設值為100MB。 -
http.max_initial_line_length
HTTP請求中,URL的長度的最大值,預設值為4KB。 -
http.max_header_size
HTTP請求中,HTTP頭部的總長度的最大值,預設值為16KB。 -
http.compression
使用HTTPS時,預設取值為false,其它情況下取值為true。 -
http.compression_level
壓縮級別,取值範圍為[1, 9],預設值為3。 -
http.detailed_errors.enabled
指定是否允許在HTTP響應訊息中暴露詳細的錯誤提示資訊,預設值為true。 -
http.pipelining.max_events
HTTP請求訊息佇列的長度,預設值為10000。 -
http.max_warning_header_count
HTTP響應訊息中允許包含的提示資訊頭部的數量,預設值為-1,即不限制。 -
http.max_warning_header_size
HTTP響應訊息中允許包含的提示資訊頭部的長度,預設值為-1,即不限制。 -
http.client_stats.enabled
指示是否記錄HTTP通訊過程中的統計資料,預設值為true。 -
http.client_stats.closed_channels.max_count
預設值為10000。 -
http.client_stats.closed_channels.max_age
關閉HTTP通道之後,上傳統計資料的時延值,預設值為5m。
http協議CORS特性相關的引數:
- http.cors.enabled
是否啟用對CORS的支援。 - http.cors.allow-origin
- http.cors.max-age
指示快取HTTP方法OPTIONS
的返回值的時長,即超時時間,預設值為1728000,即20天。 - http.cors.allow-methods
HTTP請求中允許使用的方法,預設值包括:OPTIONS
HEAD
GET
POST
PUT
DELETE
- http.cors.allow-headers
允許在HTTP請求訊息中使用的頭部,預設值包括:X-Requested-With
Content-Type
Content-Length
Authorization
Accept
User-Agent
X-Elastic-Client-Meta
- http.cors.expose-headers
指定在HTTP響應訊息中返回的頭部,預設值為X-elastic-product
。 - http.cors.allow-credentials
決定頭部Access-Control-Allow-Credentials
是否返回,預設值為false。
remote_cluster_server獨有的引數:
- remote_cluster_server.enabled
指示是否啟用遠端叢集,預設值為false。
網路通訊的執行緒模型,這部分內容在處理通訊相關的故障時非常意義,後續有空時詳細閱讀。
匯出ES程序的棧時,使用關鍵字transport_worker
來檢索,可以看到相關的執行緒的棧。
參考資料
- Nodes hot threads API