增加套接字连接数

时间:2016-10-28 08:45:15

标签: performance benchmarking vert.x

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

1 个答案:

答案 0 :(得分:1)

你有短暂的端口问题,通常你的插座用完了,你就达到了64k连接。为了解决这个问题,您可以在不同的端口启动相同的服务器,并将每个侦听端口的连接分布为接近50000个。

这是C10M在为Go创建基准时使用的技巧。这篇文章也解释了限制以及它们如何解决它。虽然它是用Go编写的,但它可以应用于任何语言,并且肯定会Vert.x