3 Stimmen

Maximale Anzahl von TCP-Verbindungen in Python?

Ich arbeite in Python auf localhost. Ich schrieb einen rohen Server nur lesen TCP-Socket, sagen wir in Port 50001.

Dann habe ich versucht, maximale Client-Verbindungen herzustellen:

def rawMultiConn(threadnum = 10000):
    g_event = threading.Event()
    def threadfn():
        sockets = [socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                   for i in range(threadnum)]
        for s in sockets:
            s.connect(('localhost', SERVER_PORT))
        g_event.wait()
        for s in sockets: s.close()

    t = threading.Thread(target = threadfn)
    t.start()
    g_event.set()
    t.join()

aber nach etwa 3000 Verbindungen tritt eine Ausnahme auf:

[Errno 10055] Eine Operation auf einem Socket konnte nicht durchgeführt werden, weil das System nicht genügend Pufferplatz hatte oder weil eine Warteschlange voll war

Wie kann ich das Problem beheben und die Verbindung wiederherstellen?

3voto

chown Punkte 50364

を確認する。 ulimit y quota für die Box und den Benutzer, der das Skript ausführt. /etc/security/limits.conf kann auch Ressourcenbeschränkungen enthalten, die Sie eventuell ändern möchten.

Versuchen Sie zu laufen ulimit -s unlimited .

Auch, ulimit -n zeigt die maximale Anzahl der erlaubten offenen Dateideskriptoren/Sockets an. Auch das muss möglicherweise geändert werden.


Einige Manpages und Referenzlinks:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X