123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- package nsqd
- import (
- "crypto/md5"
- "crypto/tls"
- "hash/crc32"
- "io"
- "log"
- "os"
- "time"
- "github.com/nsqio/nsq/internal/lg"
- )
- type Options struct {
- // basic options
- ID int64 `flag:"node-id" cfg:"id"`
- LogLevel lg.LogLevel `flag:"log-level"`
- LogPrefix string `flag:"log-prefix"`
- Logger Logger
- TCPAddress string `flag:"tcp-address"`
- HTTPAddress string `flag:"http-address"`
- HTTPSAddress string `flag:"https-address"`
- BroadcastAddress string `flag:"broadcast-address"`
- BroadcastTCPPort int `flag:"broadcast-tcp-port"`
- BroadcastHTTPPort int `flag:"broadcast-http-port"`
- NSQLookupdTCPAddresses []string `flag:"lookupd-tcp-address" cfg:"nsqlookupd_tcp_addresses"`
- AuthHTTPAddresses []string `flag:"auth-http-address" cfg:"auth_http_addresses"`
- HTTPClientConnectTimeout time.Duration `flag:"http-client-connect-timeout" cfg:"http_client_connect_timeout"`
- HTTPClientRequestTimeout time.Duration `flag:"http-client-request-timeout" cfg:"http_client_request_timeout"`
- // diskqueue options
- DataPath string `flag:"data-path"`
- MemQueueSize int64 `flag:"mem-queue-size"`
- MaxBytesPerFile int64 `flag:"max-bytes-per-file"`
- SyncEvery int64 `flag:"sync-every"`
- SyncTimeout time.Duration `flag:"sync-timeout"`
- QueueScanInterval time.Duration
- QueueScanRefreshInterval time.Duration
- QueueScanSelectionCount int `flag:"queue-scan-selection-count"`
- QueueScanWorkerPoolMax int `flag:"queue-scan-worker-pool-max"`
- QueueScanDirtyPercent float64
- // msg and command options
- MsgTimeout time.Duration `flag:"msg-timeout"`
- MaxMsgTimeout time.Duration `flag:"max-msg-timeout"`
- MaxMsgSize int64 `flag:"max-msg-size"`
- MaxBodySize int64 `flag:"max-body-size"`
- MaxReqTimeout time.Duration `flag:"max-req-timeout"`
- ClientTimeout time.Duration
- // client overridable configuration options
- MaxHeartbeatInterval time.Duration `flag:"max-heartbeat-interval"`
- MaxRdyCount int64 `flag:"max-rdy-count"`
- MaxOutputBufferSize int64 `flag:"max-output-buffer-size"`
- MaxOutputBufferTimeout time.Duration `flag:"max-output-buffer-timeout"`
- MinOutputBufferTimeout time.Duration `flag:"min-output-buffer-timeout"`
- OutputBufferTimeout time.Duration `flag:"output-buffer-timeout"`
- MaxChannelConsumers int `flag:"max-channel-consumers"`
- // statsd integration
- StatsdAddress string `flag:"statsd-address"`
- StatsdPrefix string `flag:"statsd-prefix"`
- StatsdInterval time.Duration `flag:"statsd-interval"`
- StatsdMemStats bool `flag:"statsd-mem-stats"`
- StatsdUDPPacketSize int `flag:"statsd-udp-packet-size"`
- StatsdExcludeEphemeral bool `flag:"statsd-exclude-ephemeral"`
- // e2e message latency
- E2EProcessingLatencyWindowTime time.Duration `flag:"e2e-processing-latency-window-time"`
- E2EProcessingLatencyPercentiles []float64 `flag:"e2e-processing-latency-percentile" cfg:"e2e_processing_latency_percentiles"`
- // TLS config
- TLSCert string `flag:"tls-cert"`
- TLSKey string `flag:"tls-key"`
- TLSClientAuthPolicy string `flag:"tls-client-auth-policy"`
- TLSRootCAFile string `flag:"tls-root-ca-file"`
- TLSRequired int `flag:"tls-required"`
- TLSMinVersion uint16 `flag:"tls-min-version"`
- // compression
- DeflateEnabled bool `flag:"deflate"`
- MaxDeflateLevel int `flag:"max-deflate-level"`
- SnappyEnabled bool `flag:"snappy"`
- QosEnabled bool `flag:"qos"`
- RtEnabled bool `flag:"rt"`
- FifoEnabled bool `flag:"fifo"`
- }
- func NewOptions() *Options {
- hostname, err := os.Hostname()
- if err != nil {
- log.Fatal(err)
- }
- h := md5.New()
- io.WriteString(h, hostname)
- defaultID := int64(crc32.ChecksumIEEE(h.Sum(nil)) % 1024)
- return &Options{
- ID: defaultID,
- LogPrefix: "[smqd] ",
- LogLevel: lg.INFO,
- TCPAddress: "0.0.0.0:9050",
- HTTPAddress: "0.0.0.0:9051",
- HTTPSAddress: "0.0.0.0:9052",
- BroadcastAddress: hostname,
- BroadcastTCPPort: 0,
- BroadcastHTTPPort: 0,
- NSQLookupdTCPAddresses: make([]string, 0),
- AuthHTTPAddresses: make([]string, 0),
- HTTPClientConnectTimeout: 2 * time.Second,
- HTTPClientRequestTimeout: 5 * time.Second,
- MemQueueSize: 10000,
- MaxBytesPerFile: 100 * 1024 * 1024,
- SyncEvery: 2500,
- SyncTimeout: 2 * time.Second,
- QueueScanInterval: 100 * time.Millisecond,
- QueueScanRefreshInterval: 5 * time.Second,
- QueueScanSelectionCount: 20,
- QueueScanWorkerPoolMax: 4,
- QueueScanDirtyPercent: 0.25,
- MsgTimeout: 60 * time.Second,
- MaxMsgTimeout: 15 * time.Minute,
- MaxMsgSize: 1024 * 1024,
- MaxBodySize: 5 * 1024 * 1024,
- MaxReqTimeout: 1 * time.Hour,
- ClientTimeout: 60 * time.Second,
- MaxHeartbeatInterval: 60 * time.Second,
- MaxRdyCount: 2500,
- MaxOutputBufferSize: 64 * 1024,
- MaxOutputBufferTimeout: 30 * time.Second,
- MinOutputBufferTimeout: 25 * time.Millisecond,
- OutputBufferTimeout: 250 * time.Millisecond,
- MaxChannelConsumers: 0,
- StatsdPrefix: "nsq.%s",
- StatsdInterval: 60 * time.Second,
- StatsdMemStats: true,
- StatsdUDPPacketSize: 508,
- E2EProcessingLatencyWindowTime: time.Duration(10 * time.Minute),
- DeflateEnabled: true,
- MaxDeflateLevel: 6,
- SnappyEnabled: true,
- QosEnabled: false,
- RtEnabled: true,
- FifoEnabled: false,
- TLSMinVersion: tls.VersionTLS10,
- }
- }
|