舉個例子:Gatewayworker 這時候有20W websocket 長連接,前面需要掛Nginx代理,但單機最大代理客戶端<= 65535
請問如何才能超出6w+,達到20w長連接代理客戶端呢?
一個連接包含四個部分,本地ip+本地端口+遠程ip+遠程端口,這四個元素唯一標記一個連接。本地端口有限制最高65535,所以只需要更改本地ip 遠程ip 遠程端口即可突破65535限制。所以就有多種方案
1、比如nginx本地代理,你可以用 127.0.0.1 和 192.168.xx.xx(內網(wǎng)ip) 去連遠程端口,就可以達到2個65535限制
upstream webman {
server 127.0.0.1:8787;
server 192.168.xx:xx:8787;
}
2、你也可以給linux系統(tǒng)添加一個虛擬ip,這樣想多少個65535都可以。注意要有話linux內核 http://m.wtbis.cn/doc/workerman/appendices/kernel-optimization.html ,尤其是 Soft open files 這些。
3、比如gateway開多個端口也可以,幾個端口就有幾個65535連接。
4、比如直接用unixsocket也行,就沒有本地端口限制
nginx 主機IP192.158.23.32, 這時候連接到如下主機:
upstream webman {
server 127.0.0.1:8787;
server 192.168.xx:xx:8787;
keepalive 10240;
}
這時候是不是客戶端的端口號是允許重復的嗎?
舉個例子:
IP192.158.23.32:65000 -> connect server 192.168.xx:xx:8787;
IP192.158.23.32:65000 -> connect server 127.0.0.1:8787;
walkor 大佬是這意思吧!感謝你的解答。