- dns: limit the number of active goroutines for incoming requests processing

Close #2015

Squashed commit of the following:

commit 90ba06f1fce22a452b4d61db62bd950b976debd1
Merge: 9494b29b 473d8818
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Aug 14 19:14:26 2020 +0300

    Merge remote-tracking branch 'origin/master' into max-go

commit 9494b29b65ae8fe593a487984bed051aa78e4ff9
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Aug 14 17:03:00 2020 +0300

    + max_goroutines setting

commit 87071a5e0ed43be192a7755fb25764cd4519da5a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Aug 14 15:29:00 2020 +0300

    - dns: limit the number of active goroutines for incoming requests processing
This commit is contained in:
Simon Zolin 2020-08-14 19:27:36 +03:00
parent 473d881871
commit 9e09dffbc3
2 changed files with 5 additions and 0 deletions

View File

@ -81,6 +81,7 @@ type FilteringConfig struct {
AAAADisabled bool `yaml:"aaaa_disabled"` // Respond with an empty answer to all AAAA requests AAAADisabled bool `yaml:"aaaa_disabled"` // Respond with an empty answer to all AAAA requests
EnableDNSSEC bool `yaml:"enable_dnssec"` // Set DNSSEC flag in outcoming DNS request EnableDNSSEC bool `yaml:"enable_dnssec"` // Set DNSSEC flag in outcoming DNS request
EnableEDNSClientSubnet bool `yaml:"edns_client_subnet"` // Enable EDNS Client Subnet option EnableEDNSClientSubnet bool `yaml:"edns_client_subnet"` // Enable EDNS Client Subnet option
MaxGoroutines uint32 `yaml:"max_goroutines"` // Max. number of parallel goroutines for processing incoming requests
} }
// TLSConfig is the TLS configuration for HTTPS, DNS-over-HTTPS, and DNS-over-TLS // TLSConfig is the TLS configuration for HTTPS, DNS-over-HTTPS, and DNS-over-TLS
@ -144,6 +145,7 @@ func (s *Server) createProxyConfig() (proxy.Config, error) {
BeforeRequestHandler: s.beforeRequestHandler, BeforeRequestHandler: s.beforeRequestHandler,
RequestHandler: s.handleDNSRequest, RequestHandler: s.handleDNSRequest,
EnableEDNSClientSubnet: s.conf.EnableEDNSClientSubnet, EnableEDNSClientSubnet: s.conf.EnableEDNSClientSubnet,
MaxGoroutines: int(s.conf.MaxGoroutines),
} }
if s.conf.CacheSize != 0 { if s.conf.CacheSize != 0 {

View File

@ -176,6 +176,9 @@ func (s *Server) Prepare(config *ServerConfig) error {
return fmt.Errorf("DNS: invalid custom blocking IP address specified") return fmt.Errorf("DNS: invalid custom blocking IP address specified")
} }
} }
if s.conf.MaxGoroutines == 0 {
s.conf.MaxGoroutines = 50
}
} }
// 2. Set default values in the case if nothing is configured // 2. Set default values in the case if nothing is configured