2012-06-13 16 views
8

Meine Anwendung hält zwischen 950-970 SSL-Verbindungen, bevor es innerhalb SSL_read segfolds. Ist es möglich, OpenSSL so zu konfigurieren, dass mehr Verbindungen akzeptiert werden?OpenSSL konfigurieren maximale Anzahl von Verbindungen

Ich habe es programmiert, um nichts über die Verbindungen nach dem Erwerb sie zu tun, so weiß ich, dass dies eine Funktion von # der offenen Verbindungen ist, nicht # der Verbindungen derzeit lesen/schreiben oder Zeit.

Updates:

  • gleiche Fehler auf Ubuntu an der gleichen Stelle. Ich arbeite an Ubuntu weiter.
  • Der gleiche Fehler, wenn ich meine Maschinengröße (RAM, Swap, CPU) bei der gleichen Anzahl von Verbindungen verdoppeln.
  • Kontext ist nicht null.
  • ulimit -n ist auf 4096 eingestellt. Ich habe dies auch durch Einstellung ulimit -100 verifiziert, ein anderer Fehler wird in diesem Fall beobachtet.
  • Problem tritt auch auf, wenn Threads gepoolt werden. Das Problem tritt bei der gleichen Anzahl von Verbindungen auf, unabhängig davon, ob 1 Thread/Verbindung oder 1 Thread/10 Verbindungen vorhanden sind.

Ich versuche, OpenSSL aus der Quelle mit Debugging-Optionen zu erstellen. Ich fange an mich zu fragen, ob das Stunden dauern wird oder mir etwas Nützliches zu sagen. Ich habe eine Frage an diesen here.

ich die segfault festgestellt habe, ist auf dieser Linie in openssl v 1.0.1.c passiert:

ssl_lib.c:968 

968  return(s->method->ssl_read(s,buf,num)); 

Außerdem habe ich festgestellt, dass dies nicht innen Speicherzugriffsfehler die ssl_read Funktion (die auf ssl3_read zeigen sollte). Das Mitglied ssl_read von method ist eigentlich ungültig und es scheint method selbst ist auch ungültig (ich schließe dies auf der Grundlage von "seltsam aussehende Adresse.")

+0

Können Sie genau lokalisieren, wo es segfauling ist? –

+0

Irgendwo in SSL_read 3/4 mal und einmal in SSL_get_error. Ich weiß nicht, wie man mit gdb genauer hinsieht, obwohl ich mir vorstelle, dass es das Kompilieren von der Quelle, das Ausbleichen der Optimierung, etc. beinhaltet. – djechlin

+0

Ist Ihrem System der Speicher oder irgendeine andere Ressource zufallsbedingt ausgegangen? –

Antwort

4

IMHO scheint es, als ob Sie ein Limit erreicht. Wie Sie gesagt haben, ist die Anzahl der Dateideskriptoren in Ordnung. Sie könnten also versuchen, die Stackgröße mit ulimit zu erhöhen. ZB:

ulimit -s 32768 

Darüber hinaus könnten Sie ein Tool wie valgrind, verwenden, um Ihnen, was wirklich finden zu helfen, wird an der Stelle der App segfaults geht.

Ich hoffe, es hilft.

+0

+1 für die Erwähnung von 'Valgrind', dessen Verwendung würde hier definitiv helfen. – alk

Verwandte Themen