0
我有一個使用websocket的應用程序。到目前爲止,經過嚴格的嘗試,我能夠建立65000個連接,但我的資源仍然基本上是免費的。我如何增加連接數量。增加套接字連接數量
的後端代碼是用Java編寫Vertx Verticle
public class HttpVerticle extends AbstractVerticle {
static int connectionCount = 0;
@Override
public void start() throws Exception {
HttpServer server = vertx.createHttpServer();
server.websocketHandler(serverWebSocket -> {
System.out.println("Connection established: " + (++connectionCount));
serverWebSocket.closeHandler(handler -> {
System.out.println("Connection Closed");
});
});
server.listen(8888);
}
}
主要應用:
public class Main {
public static void main(String[] args) {
System.out.println("server started @ 8080");
Vertx vertx = Vertx.vertx();
vertx.deployVerticle(new HttpVerticle());
}
}
我的系統配置:
Dell latitude
16Gb ram
intel core i7
內存信息,而65000個建立連接:
16313976 total
6009728 used
10283896 free
我可以用這種配置進行的最大連接數是多少,以及增加這個連接數的方法是什麼?我發現大內存仍然是免費的,那麼我如何增加這種連接呢?
而我的系統設置
的/etc/sysctl.conf
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.ipv4.tcp_rmem = 4096 16384 33554432
net.ipv4.tcp_wmem = 4096 16384 33554432
net.ipv4.tcp_mem = 786432 1048576 26777216
net.ipv4.tcp_max_tw_buckets = 360000
net.core.netdev_max_backlog = 2500
vm.min_free_kbytes = 65536
vm.swappiness = 0
net.ipv4.ip_local_port_range = 1024 65535
在/etc/security/limits.conf
myusername hard nofile 1000000
root soft nofile 1000000
root hard nofile 1000000
非常感謝。但我做了一個方法,我在端口8000上啓動了一個nginx服務器。並在8001,8002,8003中創建了3個不同的服務器。這個想法是使用nginx負載均衡器將連接分配給這三臺服務器。但是當它嘗試這種方法時,nginx負載均衡器本身只需要65k連接。任何想法我怎麼能解決這個問題? – CuriousMind
我認爲這是同樣的問題,你有3臺服務器,但是ngnix是一臺服務器,所以一旦它達到〜64k連接,它將耗盡臨時端口,你仍然需要啓動幾臺ngnix服務器或者將其連接到vert.x服務器直接 –
這些問題如何正常解決?我猜想使用websocket的應用程序不僅限於65k連接? – CuriousMind