mirror of
				https://github.com/3proxy/3proxy.git
				synced 2025-11-04 15:52:39 +08:00 
			
		
		
		
	update highload documentation
This commit is contained in:
		
							parent
							
								
									2f5265bee6
								
							
						
					
					
						commit
						e588dce959
					
				@ -49,28 +49,87 @@ expecation.
 | 
				
			|||||||
<h4>Extending system limitation</h4>
 | 
					<h4>Extending system limitation</h4>
 | 
				
			||||||
Check manuals / documentation for your system limitations. You may need to change
 | 
					Check manuals / documentation for your system limitations. You may need to change
 | 
				
			||||||
sysctls or even rebuild the kernel from source.
 | 
					sysctls or even rebuild the kernel from source.
 | 
				
			||||||
To help with system-dependant settings, 3proxy supports different socket options
 | 
					To help with system-dependant settings, since 0.9-devel 3proxy supports different
 | 
				
			||||||
which can be set via -ol option for listening socket, -oc for proxy-to-client
 | 
					socket options which can be set via -ol option for listening socket, -oc for proxy-to-client
 | 
				
			||||||
socket and -os for proxy-to-server socket. Example:
 | 
					socket and -os for proxy-to-server socket. Example:
 | 
				
			||||||
<pre>
 | 
					<pre>
 | 
				
			||||||
proxy -olSO_REUSEADDR,SO_REUSEPORT -ocTCP_TIMESTAMPS,TCP_NODELAY -osTCP_NODELAY
 | 
					proxy -olSO_REUSEADDR,SO_REUSEPORT -ocTCP_TIMESTAMPS,TCP_NODELAY -osTCP_NODELAY
 | 
				
			||||||
</pre>
 | 
					</pre>
 | 
				
			||||||
available options are system dependant.
 | 
					available options are system dependant.
 | 
				
			||||||
<h4>Extending ephemeral port range</h4>
 | 
					<h4>Extending ephemeral port range</h4>
 | 
				
			||||||
Check ephemeral port range for your system and extend it to reuired number of ports.
 | 
					Check ephemeral port range for your system and extend it to the number of the
 | 
				
			||||||
Ephimeral range is always limited to maximum number of ports (64K). To extend
 | 
					ports required.
 | 
				
			||||||
outgoing connections above this limis, extending ephemeral port range is not enough,
 | 
					Ephimeral range is always limited to maximum number of ports (64K). To extend the
 | 
				
			||||||
you need additional actions:
 | 
					number of outgoing connections above this limit, extending ephemeral port range
 | 
				
			||||||
 | 
					is not enough, you need additional actions:
 | 
				
			||||||
<ol>
 | 
					<ol>
 | 
				
			||||||
<li> Configure multiple outgoing IPs
 | 
					<li> Configure multiple outgoing IPs
 | 
				
			||||||
<li> Make sure 3proxy is configured to use different outgoing IP by either using
 | 
					<li> Make sure 3proxy is configured to use different outgoing IP by either using
 | 
				
			||||||
multiple services with different external interfaces or via "parent extip" rotation.
 | 
					multiple services with different external interfaces 
 | 
				
			||||||
 | 
					<pre>
 | 
				
			||||||
 | 
					allow user1,user11,user111
 | 
				
			||||||
 | 
					proxy -p1001 -e1.1.1.1
 | 
				
			||||||
 | 
					flush
 | 
				
			||||||
 | 
					allow user2,user22,user222
 | 
				
			||||||
 | 
					proxy -p1001 -e1.1.1.2
 | 
				
			||||||
 | 
					flush
 | 
				
			||||||
 | 
					allow user3,user33,user333
 | 
				
			||||||
 | 
					proxy -p1001 -e1.1.1.3
 | 
				
			||||||
 | 
					flush
 | 
				
			||||||
 | 
					allow user4,user44,user444
 | 
				
			||||||
 | 
					proxy -p1001 -e1.1.1.4
 | 
				
			||||||
 | 
					flush
 | 
				
			||||||
 | 
					</pre>
 | 
				
			||||||
 | 
					or via "parent extip" rotation,
 | 
				
			||||||
 | 
					e.g.
 | 
				
			||||||
 | 
					<pre>
 | 
				
			||||||
 | 
					allow user1,user11,user111
 | 
				
			||||||
 | 
					parent 1000 extip 1.1.1.1 0
 | 
				
			||||||
 | 
					allow user2,user22,user222
 | 
				
			||||||
 | 
					parent 1000 extip 1.1.1.2 0
 | 
				
			||||||
 | 
					allow user3,user33,user333
 | 
				
			||||||
 | 
					parent 1000 extip 1.1.1.3 0
 | 
				
			||||||
 | 
					allow user4,user44,user444
 | 
				
			||||||
 | 
					parent 1000 extip 1.1.1.4 0
 | 
				
			||||||
 | 
					proxy
 | 
				
			||||||
 | 
					</pre>
 | 
				
			||||||
 | 
					or
 | 
				
			||||||
 | 
					<pre>
 | 
				
			||||||
 | 
					allow *
 | 
				
			||||||
 | 
					parent 250 extip 1.1.1.1 0
 | 
				
			||||||
 | 
					parent 250 extip 1.1.1.2 0
 | 
				
			||||||
 | 
					parent 250 extip 1.1.1.3 0
 | 
				
			||||||
 | 
					parent 250 extip 1.1.1.4 0
 | 
				
			||||||
 | 
					socks
 | 
				
			||||||
 | 
					</pre>
 | 
				
			||||||
 | 
					<pre>
 | 
				
			||||||
 | 
					</pre>
 | 
				
			||||||
 | 
					Under latest Linux version you can also start multiple services with different
 | 
				
			||||||
 | 
					external addresses on the single port with SO_REUSEPORT on listening socket to
 | 
				
			||||||
 | 
					evenly distribute incoming connections between outgoing interfaces:
 | 
				
			||||||
 | 
					<pre>
 | 
				
			||||||
 | 
					socks -olSO_REUSEPORT -p3128 -e 1.1.1.1
 | 
				
			||||||
 | 
					socks -olSO_REUSEPORT -p3128 -e 1.1.1.2
 | 
				
			||||||
 | 
					socks -olSO_REUSEPORT -p3128 -e 1.1.1.3
 | 
				
			||||||
 | 
					socks -olSO_REUSEPORT -p3128 -e 1.1.1.4
 | 
				
			||||||
 | 
					</pre>
 | 
				
			||||||
 | 
					for Web browsing last two examples are not recommended, because same client can get
 | 
				
			||||||
 | 
					different external address for different requests, you should choose external
 | 
				
			||||||
 | 
					interface with user-based rules instead.
 | 
				
			||||||
<li> You may need additional system dependant actions to use same port on different IPs,
 | 
					<li> You may need additional system dependant actions to use same port on different IPs,
 | 
				
			||||||
usually by adding SO_REUSEADDR socket option to external socket. This option can be
 | 
					usually by adding SO_REUSEADDR socket option to external socket. This option can be
 | 
				
			||||||
set (since 0.9 devel) with -osSO_REUSEADDR option:
 | 
					set (since 0.9 devel) with -osSO_REUSEADDR option:
 | 
				
			||||||
<pre>
 | 
					<pre>
 | 
				
			||||||
proxy -p3128 -e1.2.3.4 -osSO_REUSEADDR
 | 
					proxy -p3128 -e1.2.3.4 -osSO_REUSEADDR
 | 
				
			||||||
</pre>
 | 
					</pre>
 | 
				
			||||||
 | 
					Behavior for SO_REUSEADDR and SO_REUSEPOR is different between different system,
 | 
				
			||||||
 | 
					even between different kernel versions and can lead to unexpected results.
 | 
				
			||||||
 | 
					Specifics is described <a href="https://stackoverflow.com/questions/14388706/socket-options-so-reuseaddr-and-so-reuseport-how-do-they-differ-do-they-mean-t">here</a>.
 | 
				
			||||||
 | 
					Use this options only if actually required and if you fully understand possible
 | 
				
			||||||
 | 
					consiquences. E.g. SO_REUSEPORT can help to establish more connections than the
 | 
				
			||||||
 | 
					number of the client port available, but it can also lead to situation connections
 | 
				
			||||||
 | 
					are randomely fail due to ip+port pairs collision if remote or local system 
 | 
				
			||||||
 | 
					doesn't support this trick.
 | 
				
			||||||
</ol>
 | 
					</ol>
 | 
				
			||||||
<h4>Setting stacksize</h4>
 | 
					<h4>Setting stacksize</h4>
 | 
				
			||||||
'stacksize' is a size added to all stack allocations and can be both positive and
 | 
					'stacksize' is a size added to all stack allocations and can be both positive and
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user