LINUX.ORG.RU

Сообщения frogour

 

Намертво зависает Debian при проксировании WebSocket с iPhone... Помогите!

Версии:
ESXi v6.5.0
Debian v9.6
Nginx v1.10.3

Системные параметры:
CPU - 4
RAM - 2 GB

Проблема:
На виртуалке поставлен Debian 9.6 c 4 ядрами ЦП.
На Debian-е стоит Nginx (пробовал и с Apache2, ситуация такая же).
Nginx сконфигурирован на обратный прокси websocket-a(конфиг в конце), все работает прекрасно до момента пока ктото не зайдет с айфона, после чего система намертво зависает.
Виртуальная машина показывает что ЦП системы загружен на 25% тоесть 1 ядро(2,5GHz), память застывает в одном положении, сетевой битрейт - 0, система полностю мертвая.
Логов никаких практически нет ибо система не успевает среагировать...
Помогает только рестарт системы.

Что я пробовал сделать:
1. Подождать, вдруг оживет... нет, не оживает.
2. Попытатся отследить загрузку ЦП утилитой htop, ничего не видно, система умирает мгновенно и htop не успевает ничего показать.
3. Попытался утилитой htop распределить нагрузку процесов на ядра, тоесть процесы nginx повесил на 4 ядро а все остальные процессы на 1,2,3(пробовал несколько разных конфигураций)... нет, не помогает.

Интересный факт:
Если сертификат будет неправильный то в логах access.log не видно чтобы iphone ходил на /ws, а система не умирает.
Тоесть если сертификат неправильный то iPhone просит разрешение на подключение к незащищенному хосту, и после разрешения не устанавливает соединение с websocket-ом, а только прогружает веб странички, и система себе работает дальше.

Что мы имеем... Кто угодно с iPhone берет и убивает прокси сервер всместе со всей системой...

Конфигурация nginx:

upstream websocket { server 192.168.1.58:3636; } server { listen 443 ssl default_server; listen [::]:443 ssl default_server; root /var/www/html; client_max_body_size 50M; index index.html index.htm index.nginx-debian.html; server_name some.host.com; ssl_certificate /some_host_com_certificate.cert; ssl_certificate_key /some_host_com_key.key; location /ws { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 86400; proxy_pass http://websocket; } }

 , , , ,

frogour
()

RSS подписка на новые темы