mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 02:03:20 -04:00 
			
		
		
		
	
		
			
	
	
		
			93 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
		
		
			
		
	
	
			93 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
|  | .\" Generated by Mmark Markdown Processer - mmark.miek.nl | ||
|  | .TH "COREDNS-MULTISOCKET" 7 "May 2025" "CoreDNS" "CoreDNS Plugins" | ||
|  | 
 | ||
|  | .SH "NAME" | ||
|  | .PP | ||
|  | \fImultisocket\fP - allows to start multiple servers that will listen on one port. | ||
|  | 
 | ||
|  | .SH "DESCRIPTION" | ||
|  | .PP | ||
|  | With \fImultisocket\fP, you can define the number of servers that will listen on the same port. The SO_REUSEPORT socket | ||
|  | option allows to open multiple listening sockets at the same address and port. In this case, kernel distributes incoming | ||
|  | connections between sockets. | ||
|  | 
 | ||
|  | .PP | ||
|  | Enabling this option allows to start multiple servers, which increases the throughput of CoreDNS in environments with a | ||
|  | large number of CPU cores. | ||
|  | 
 | ||
|  | .SH "SYNTAX" | ||
|  | .PP | ||
|  | .RS | ||
|  | 
 | ||
|  | .nf | ||
|  | multisocket [NUM\_SOCKETS] | ||
|  | 
 | ||
|  | .fi | ||
|  | .RE | ||
|  | 
 | ||
|  | .IP \(bu 4 | ||
|  | \fBNUM_SOCKETS\fP - the number of servers that will listen on one port. Default value is equal to GOMAXPROCS. | ||
|  | 
 | ||
|  | 
 | ||
|  | .SH "EXAMPLES" | ||
|  | .PP | ||
|  | Start 5 TCP/UDP servers on the same port. | ||
|  | 
 | ||
|  | .PP | ||
|  | .RS | ||
|  | 
 | ||
|  | .nf | ||
|  | \&. { | ||
|  |     multisocket 5 | ||
|  |     forward . /etc/resolv.conf | ||
|  | } | ||
|  | 
 | ||
|  | .fi | ||
|  | .RE | ||
|  | 
 | ||
|  | .PP | ||
|  | Do not define \fB\fCNUM_SOCKETS\fR, in this case it will take a value equal to GOMAXPROCS. | ||
|  | 
 | ||
|  | .PP | ||
|  | .RS | ||
|  | 
 | ||
|  | .nf | ||
|  | \&. { | ||
|  |     multisocket | ||
|  |     forward . /etc/resolv.conf | ||
|  | } | ||
|  | 
 | ||
|  | .fi | ||
|  | .RE | ||
|  | 
 | ||
|  | .SH "RECOMMENDATIONS" | ||
|  | .PP | ||
|  | The tests of the \fB\fCmultisocket\fR plugin, which were conducted for \fB\fCNUM_SOCKETS\fR from 1 to 10, did not reveal any side | ||
|  | effects or performance degradation. | ||
|  | 
 | ||
|  | .PP | ||
|  | This means that the \fB\fCmultisocket\fR plugin can be used with a default value that is equal to GOMAXPROCS. | ||
|  | 
 | ||
|  | .PP | ||
|  | However, to achieve the best results, it is recommended to consider the specific environment and plugins used in | ||
|  | CoreDNS. To determine the optimal configuration, it is advisable to conduct performance tests with different | ||
|  | \fB\fCNUM_SOCKETS\fR, measuring Queries Per Second (QPS) and system load. | ||
|  | 
 | ||
|  | .PP | ||
|  | If conducting such tests is difficult, follow these recommendations: | ||
|  | 1. Determine the maximum CPU consumption of CoreDNS server without \fB\fCmultisocket\fR plugin. Estimate how much CPU CoreDNS | ||
|  |    actually consumes in specific environment under maximum load. | ||
|  | 2. Align \fB\fCNUM_SOCKETS\fR with the estimated CPU usage and CPU limits or system's available resources. | ||
|  |    Examples: | ||
|  |    - If CoreDNS consumes 4 CPUs and 8 CPUs are available, set \fB\fCNUM_SOCKETS\fR to 2. | ||
|  |    - If CoreDNS consumes 8 CPUs and 64 CPUs are available, set \fB\fCNUM_SOCKETS\fR to 8. | ||
|  | 
 | ||
|  | .SH "LIMITATIONS" | ||
|  | .PP | ||
|  | The SO_REUSEPORT socket option is not available for some operating systems. It is available since Linux Kernel 3.9 and | ||
|  | not available for Windows at all. | ||
|  | 
 | ||
|  | .PP | ||
|  | Using this plugin with a system that does not support SO_REUSEPORT will cause an \fB\fCaddress already in use\fR error. | ||
|  | 
 |