Moja aplikacja przechowuje między 950-970 połączeniami SSL, zanim ulegnie awarii wewnątrz SSL_read
. Czy można skonfigurować OpenSSL, aby akceptował więcej połączeń niż to?OpenSSL konfiguruje maksymalną liczbę połączeń
Programowałem go, aby nic nie robić przez połączenia po ich nabyciu, więc wiem, że jest to funkcja # otwartych połączeń, a nie # połączeń aktualnie odczytujących/zapisujących lub czas.
Aktualizacje:
- sam błąd na ubuntu w tym samym miejscu. Pracuję nad ubuntu.
- Ten sam błąd, jeśli podwoję swój rozmiar urządzenia (pamięć RAM, zamiana, procesor) na tę samą liczbę połączeń.
- Kontekst nie jest pusty.
ulimit -n
jest ustawiona na 4096. Zweryfikowałem to również ustawiająculimit -100
, w tym przypadku zaobserwowano inny błąd.- Problem występuje, nawet jeśli wątki są łączone. Problem występuje przy tej samej liczbie połączeń, niezależnie od tego, czy istnieje 1 wątek/połączenie lub 1 wątek/10 połączeń.
Próbuję zbudować OpenSSL ze źródła z włączonymi opcjami debugowania. Zaczynam się zastanawiać, czy to zajmie wiele godzin, czy powiedzieć mi coś przydatnego. Mam pytanie na temat tego here.
Mam ustalił segfault dzieje się na tej linii w openssl przeciwko 1.0.1.c:
ssl_lib.c:968
968 return(s->method->ssl_read(s,buf,num));
Ponadto, mam ustalone, że nie jest to segfaulting wewnątrz funkcja ssl_read
(która powinna wskazywać na ssl3_read
). Człon ssl_read
od method
faktycznie nieważne i wydaje się sama method
jest również nieważny (ja to wnioskowanie na podstawie „dziwne patrząc adres.”)
Czy potrafisz zlokalizować dokładnie to, gdzie jest to segfault? –
Gdzieś w SSL_read 3/4 razy i raz w SSL_get_error. Nie wiem, jak zaglądać do środka bliżej niż to z gdb, chociaż wyobrażam sobie, że wymaga to kompilacji ze źródła, bezmyślnej optymalizacji, itp. – djechlin
Czy twój systemowi brakuje pamięci lub jakiegoś innego zasobu? –