我有一个使用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