Archived

This forum has been archived. Please start a new discussion on GitHub.

Why ice server routine connection fds limitation is 25000 at most?

I noticed that the Ice server only allow 25000 connections at most on centos 6.2 64bits, over that the server closes the old fds, which is observed by cli(ss -s). I've increased the limitation of fds to 1000000, and expanded port range from 1024 to 65000. The memory of the machine is 16G. The test routine is Ice-Performance-3.4.1(http://doc.zeroc.com/download/attachments/2523228/Ice-Performance-3.4.1.tar.gz?version=1&modificationDate=1320340971000&api=v2) which is downloaded from your website.

Comments

  • benoit
    benoit Rennes, France
    Hi,

    Do you run the clients and server on separate machines? Do you see any exceptions/warnings/errors when connections start being closed? Is this with the Ice for C++ runtime? Which version?

    As described on the scalability performance page, we were able to establish well over 200,000 connections to a single server, your server should therefore be able to handle a lot more than just 25,000 connections.

    Cheers,
    Benoit.
  • benoit wrote: »
    Hi,

    Do you run the clients and server on separate machines? Do you see any exceptions/warnings/errors when connections start being closed? Is this with the Ice for C++ runtime? Which version?

    As described on the scalability performance page, we were able to establish well over 200,000 connections to a single server, your server should therefore be able to handle a lot more than just 25,000 connections.

    Cheers,
    Benoit.

    It is Ice for C++, version is 3.5.0, the client and server run on different machine.
    1. Run client with "./client 50000 192.168.250.183 10000".
    2. Run server with "./server 4 > Server.log 2>&1&"

    I tried to set trace level to 2 for network, got the following info:
    -- 10/08/13 23:38:49.533 ./server: Network: closing tcp connection
    local address = 192.168.250.183:10000
    remote address = 192.168.250.225:24769
    -- 10/08/13 23:38:49.534 ./server: Network: closing tcp connection
    local address = 192.168.250.183:10000
    remote address = 192.168.250.225:24770
    -- 10/08/13 23:38:49.534 ./server: Network: closing tcp connection
    local address = 192.168.250.183:10000
    remote address = 192.168.250.225:24771
    -- 10/08/13 23:38:49.535 ./server: Network: closing tcp connection
    local address = 192.168.250.183:10000
    remote address = 192.168.250.225:24772
    -- 10/08/13 23:38:49.536 ./server: Network: closing tcp connection
    local address = 192.168.250.183:10000
    remote address = 192.168.250.225:24773
    -- 10/08/13 23:38:49.537 ./server: Network: closing tcp connection
    local address = 192.168.250.183:10000
    remote address = 192.168.250.225:24775
    -- 10/08/13 23:38:49.538 ./server: Network: closing tcp connection
    local address = 192.168.250.183:10000
    remote address = 192.168.250.225:24774
    -- 10/08/13 23:38:49.539 ./server: Network: closing tcp connection
    local address = 192.168.250.183:10000
    remote address = 192.168.250.225:24777
  • benoit
    benoit Rennes, France
    Hi,

    It sounds like the client is closing the connections, it's possible that ACM closes those connections if they remain idle for more than 60s.

    Do you see the message "All 50000 connection started" on the client side? Can you enable Ice.Trace.Network=2 and Ice.Trace.Protocol=1 on the client side and send us the output?

    Two things you could also try:
    • disable ACM by setting Ice.ACM.Client=0 in the client
    • instead of starting a client with 50000 connections, start 10 clients with 5000 connections

    Cheers,
    Benoit.
  • benoit wrote: »
    Hi,

    It sounds like the client is closing the connections, it's possible that ACM closes those connections if they remain idle for more than 60s.

    Do you see the message "All 50000 connection started" on the client side? Can you enable Ice.Trace.Network=2 and Ice.Trace.Protocol=1 on the client side and send us the output?

    Two things you could also try:
    • disable ACM by setting Ice.ACM.Client=0 in the client
    • instead of starting a client with 50000 connections, start 10 clients with 5000 connections

    Cheers,
    Benoit.

    After setting "Ice.ACM.Client=0" in the client, the number of connection can reach 50000 and can be holden by the server steadily.

    Thank you very much, Benoit!

    My objective is that the server can accept 1000,000 connections well.