Serwer http "wiesza się" przy więcej niż 4 requestach na raz.

0

Cześć.
Mam spory problem z serwerem. Stoi na nim parę aplikacji, w tym api i frontend.
Po wysłaniu requestu przez ajax leci ono do serwera frontendowego. A z niego do api.
Przy prawie jednoczesnym odpytaniu serwera o 4 rzeczy wszystko jest ok, jeśli natomiast odpytam o 5 rzeczy nginx się zawiesza. Nie jest ubity, lecz nie odpowiada, nie zwraca żadnych danych. Po sprawdzeniu statusu w momencie gdy nie odpowiada na requesty dostaję poprawne dane:
screenshot-20170801135749.png
Polecenie top nie pokazuje nadmiernego zużycia zasobów, jednakże pokazuje że tylko 1 task jest "running".
Poniżej error.log ngine'xa:

2017/08/01 1355 [alert] 22293#22293: *732 open socket #24 left in connection 11
2017/08/01 1355 [alert] 22293#22293: *733 open socket #25 left in connection 12
2017/08/01 1355 [alert] 22293#22293: *734 open socket #34 left in connection 16
2017/08/01 1355 [alert] 22293#22293: *739 open socket #26 left in connection 18
2017/08/01 1355 [alert] 22293#22293: *735 open socket #35 left in connection 19
2017/08/01 1355 [alert] 22293#22293: *740 open socket #27 left in connection 21
2017/08/01 1355 [alert] 22293#22293: aborting
2017/08/01 1355 [alert] 22294#22294: *736 open socket #26 left in connection 7
2017/08/01 1355 [alert] 22294#22294: *634 open socket #30 left in connection 8
2017/08/01 1355 [alert] 22294#22294: *718 open socket #27 left in connection 9
2017/08/01 1355 [alert] 22294#22294: *635 open socket #31 left in connection 10
2017/08/01 1355 [alert] 22294#22294: *627 open socket #22 left in connection 11
2017/08/01 1355 [alert] 22294#22294: *636 open socket #32 left in connection 12
2017/08/01 1355 [alert] 22294#22294: *719 open socket #33 left in connection 14
2017/08/01 1355 [alert] 22294#22294: *633 open socket #29 left in connection 15
2017/08/01 1355 [alert] 22294#22294: *720 open socket #34 left in connection 17
2017/08/01 1355 [alert] 22294#22294: *738 open socket #36 left in connection 21
2017/08/01 1355 [alert] 22294#22294: aborting
2017/08/01 1355 [info] 24415#24415: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf:65
2017/08/01 1307 [alert] 24427#24427: *9 open socket #21 left in connection 6
2017/08/01 1307 [alert] 24427#24427: *11 open socket #22 left in connection 7
2017/08/01 1307 [alert] 24427#24427: *25 open socket #27 left in connection 8
2017/08/01 1307 [alert] 24427#24427: *31 open socket #29 left in connection 9
2017/08/01 1307 [alert] 24427#24427: *7 open socket #28 left in connection 10
2017/08/01 1307 [alert] 24427#24427: *30 open socket #26 left in connection 14
2017/08/01 1307 [alert] 24427#24427: *22 open socket #36 left in connection 18
2017/08/01 1307 [alert] 24427#24427: *24 open socket #38 left in connection 20
2017/08/01 1307 [alert] 24427#24427: aborting
2017/08/01 1307 [info] 24495#24495: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf:65

W nginx.conf:65 mam zamknięcie bloku:

http {

Basic Settings

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

server_tokens off;

server_names_hash_bucket_size 64;

server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

SSL Settings

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;

Logging Settings

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

Gzip Settings

gzip on;
gzip_disable "msie6";

gzip_vary on;

gzip_proxied any;

gzip_comp_level 6;

gzip_buffers 16 8k;

gzip_http_version 1.1;

gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

Virtual Host Configs

#ient_max_body_size

include /etc/nginx/conf.d/.conf;
include /etc/nginx/sites-enabled/
;

large_client_header_buffers 8 35k;
}
Dodam że api stoi na zendzie. Problem nie występuję jeśli zawale serwer requestami (ok 10.000) z innego serwera.
Z góry dziękuję za wszelką pomoc.

0

Sprawdź przy pomocy polecenia netstat -tpo czy nie wiszą ci połączenia.

Możesz też spradzić pulę połączeń w httpd i ją zwiększyć.
https://www.nginx.com/blog/tuning-nginx/
Tylko jeżeli ją zwiększysz no do 20 i dalej będziesz widział zapychanie się tej puli, to znaczy, że problem jest gdzieś w samymych aplikacjach.

Jeżeli masz jakieś testy do tych aplikacji to fajnie byłoby odpalić tcpdumpa/wiresharka i wtedy te testy aplikacji, lub ręcznie poklikać i zobaczyć, czy jakaś funkcja nie wisi, np nie czeka na coś z ws z timeoutem 5 minut.

IMO to tam Ci połączenia wiszą, ale dla czego to już ciężko tak bez wjazdu na maszynę sprawdzić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1