Bugreport

Общие вопросы, связанные с работой сайта и форума
Аватара пользователя
ATauenis
Advanced Member
Сообщения: 5791
Зарегистрирован: 30.04.2015,21:30
Откуда: Москва
Поблагодарили: 19 раз
Контактная информация:

Вклад в сообщество

Bugreport

Сообщение ATauenis » 12.07.2026,23:53

OSA писал(а): 12.07.2026,22:50 ERR_HTTP2_PROTOCOL_ERROR
Помогает нажать F5. У меня сразу открывается после этого.

Такая шняга сейчас есть много где. Так понимаю, это разрыв/отказ соединения, который браузеры до сих пор не научились нормально отображать, если используется HTTP/2. И почему-то регулярно на сайтах вылезает эта шняга. Всегда разово, и непредсказуемо. Есть подозрение, что это беспредел от ТСПУ. Т.к. похожая ошибка стабильно есть на сайтах, которые попали под раздачу борьбы с Телеграмом (точнее, на них сначала прогружается несколько КБ, а потом на пол дня connection reset, но браузер помнит, что там есть HTTP/2, и выдаёт именно его ошибку без объяснений и призывов к действиям).

OSA
Advanced Member
Сообщения: 8229
Зарегистрирован: 16.07.2015,00:19
Откуда: Санкт-Петербург
Поблагодарили: 4 раза

Вклад в сообщество

Bugreport

Сообщение OSA » 13.07.2026,00:57

даже эта тема попала в этот список....

SuperMax
Advanced Member
Сообщения: 2570
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Благодарил (а): 7 раз
Поблагодарили: 23 раза
Контактная информация:

Конкурсы

Вклад в сообщество

Bugreport

Сообщение SuperMax » 13.07.2026,06:50

ATauenis писал(а): 12.07.2026,23:53
OSA писал(а): 12.07.2026,22:50 ERR_HTTP2_PROTOCOL_ERROR
Помогает нажать F5. У меня сразу открывается после этого.

Такая шняга сейчас есть много где. Так понимаю, это разрыв/отказ соединения, который браузеры до сих пор не научились нормально отображать, если используется HTTP/2. И почему-то регулярно на сайтах вылезает эта шняга. Всегда разово, и непредсказуемо. Есть подозрение, что это беспредел от ТСПУ. Т.к. похожая ошибка стабильно есть на сайтах, которые попали под раздачу борьбы с Телеграмом (точнее, на них сначала прогружается несколько КБ, а потом на пол дня connection reset, но браузер помнит, что там есть HTTP/2, и выдаёт именно его ошибку без объяснений и призывов к действиям).
у меня ошибка вылезает только на этом сайте - страницы рандомные
F5 помогает, что подсказывает что проблема именно на хостинге сайта или с самим сайтом - надо явно проверять настройки ибо похоже это на обрыв соединения

Изображение

также я посмотрел - даже пинг до phantom.sannata.org идет не с первого раза - я потыкался из разных каналов и точек мира

да, судя по тому что резолвится
PING phantom.sannata.org (79.143.72.17) 56(84) bytes of data.
64 bytes from vlan736.dci6 (79.143.72.17): icmp_seq=1 ttl=55 time=61.4 ms

inetnum: 79.143.72.0 - 79.143.73.255
netname: RU-JSCIOT-20071121
country: RU
org: ORG-JI50-RIPE
admin-c: INO22-RIPE
tech-c: INO22-RIPE
status: ALLOCATED PA
mnt-by: mnt-ru-jsciot-1
mnt-by: RIPE-NCC-HM-MNT
created: 2021-02-25T10:38:36Z
last-modified: 2022-05-19T10:42:11Z
source: RIPE

organisation: ORG-JI50-RIPE
org-name: JSC IOT
country: RU
reg-nr: 1187746221860
org-type: LIR
address: ter. Skolkovo Innovation Center, Bolshoy Blvd, d. 42 pp 1 fl

то становиться ясно - сеть сколково
что как бы изначально плохая идея, и надо менять хостинг

pahan
Advanced Member
Сообщения: 5347
Зарегистрирован: 13.03.2015,14:23
Откуда: Химки, М.О.
Благодарил (а): 2 раза
Поблагодарили: 34 раза

Вклад в сообщество

Bugreport

Сообщение pahan » 13.07.2026,14:04

у меня ошибка вылезает только на этом сайте - страницы рандомные
+1
Помогает нажать F5
Обычно помогает. Но может и действительно на полдня зависнуть и помогает только открыть из другой сети.

SuperMax
Advanced Member
Сообщения: 2570
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Благодарил (а): 7 раз
Поблагодарили: 23 раза
Контактная информация:

Конкурсы

Вклад в сообщество

Bugreport

Сообщение SuperMax » 13.07.2026,14:14

pahan писал(а): 13.07.2026,14:04
у меня ошибка вылезает только на этом сайте - страницы рандомные
+1
Помогает нажать F5
Обычно помогает. Но может и действительно на полдня зависнуть и помогает только открыть из другой сети.
вот прямо сейчас открылось только после Ctrl+F5 - обычный F5 не прокатил

SuperMax
Advanced Member
Сообщения: 2570
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Благодарил (а): 7 раз
Поблагодарили: 23 раза
Контактная информация:

Конкурсы

Вклад в сообщество

Bugreport

Сообщение SuperMax » 13.07.2026,14:28

так как интенсивность ошибок сильно возросла - поймал ошибку явно в консоли браузера - это NS_ERROR_NET_INTERRUPT
chatGPT дает такую инструкцию
------------------------------
[center]Диагностика ошибки NS_ERROR_NET_INTERRUPT[/center]

Что означает ошибка

Ошибка

Код: Выделить всё

NS_ERROR_NET_INTERRUPT
в Firefox означает, что соединение с сервером было установлено, но передача данных неожиданно прервалась.

Это обычно не проблема DNS и не обычная HTTP-ошибка вида 404 или 500. Браузер начал получать ответ, но сервер, прокси, CDN или backend закрыл соединение до завершения передачи данных.

Если ошибка возникает у нескольких посетителей, проверять нужно:
  • веб-сервер;
  • reverse proxy;
  • CDN или Cloudflare;
  • PHP-FPM, Node.js, Java или другой backend;
  • нагрузку и ресурсы сервера;
  • IPv4 и IPv6;
  • HTTP/2 и HTTP/3;
  • таймауты;
  • целостность HTTP-ответа.

1. Определить, какой именно запрос завершается ошибкой

В Firefox открыть:

Код: Выделить всё

F12 → Сеть
Затем обновить проблемную страницу.

Нужно посмотреть:
  • падает основной HTML-документ или отдельный CSS, JS, изображение либо API-запрос;
  • точный URL запроса;
  • используемый протокол: HTTP/1.1, HTTP/2 или HTTP/3;
  • IP-адрес сервера;
  • размер уже полученной части ответа;
  • ошибка возникает сразу или спустя фиксированное время;
  • падают только динамические страницы или также статические файлы.
Желательно сохранить HAR-файл:

Код: Выделить всё

Правая кнопка в списке запросов → Save All As HAR
Если падает только один API-запрос, проблему нужно искать прежде всего в приложении или backend.

Если прерывается загрузка основного HTML-документа, возможны проблемы с Nginx, Apache, CDN, балансировщиком или перезапуском backend.

2. Сравнить HTTP/1.1 и HTTP/2

С Linux-сервера или другой машины выполнить:

Код: Выделить всё

URL='https://example.com/problem-page'

curl -vk --http1.1 "$URL" -o /dev/null
curl -vk --http2 "$URL" -o /dev/null
Для многократной проверки:

Код: Выделить всё

URL='https://example.com/problem-page'

for proto in '--http1.1' '--http2'; do
echo "=== $proto ==="

```
for i in $(seq 1 100); do
    curl -sS "$proto" \
        --connect-timeout 10 \
        --max-time 60 \
        -o /dev/null \
        -w "$i code=%{http_code} ip=%{remote_ip} bytes=%{size_download} time=%{time_total}\n" \
        "$URL" ||
        echo "$i FAILED rc=$?"
done
```

done
Особенно важны коды завершения curl:
Если HTTP/1.1 работает стабильно, а HTTP/2 периодически завершается ошибкой, нужно проверять:
  • настройки HTTP/2;
  • CDN;
  • TLS-терминатор;
  • reverse proxy;
  • связь proxy с backend.
Если включён HTTP/3, его желательно временно отключить и повторить тест.

3. Одновременно смотреть журналы сервера

Во время воспроизведения ошибки нужно наблюдать за журналами веб-сервера и backend.

Nginx

Код: Выделить всё

tail -F /var/log/nginx/access.log /var/log/nginx/error.log
Искать сообщения:

Код: Выделить всё

upstream prematurely closed connection
recv() failed
connection reset by peer
upstream timed out
no live upstreams
worker_connections are not enough
open socket ... left in connection
Apache на CentOS, AlmaLinux или Rocky Linux

Код: Выделить всё

tail -F /var/log/httpd/access_log /var/log/httpd/error_log
Apache на Debian или Ubuntu

Код: Выделить всё

tail -F /var/log/apache2/access.log /var/log/apache2/error.log
PHP-FPM

Код: Выделить всё

journalctl -f -u php-fpm
В некоторых конфигурациях:

Код: Выделить всё

tail -F /var/log/php-fpm/error.log
Искать сообщения:

Код: Выделить всё

server reached pm.max_children
child exited on signal
segmentation fault
request terminated
execution timed out
Важно сопоставить точное время ошибки в браузере с записями:
  • access.log;
  • error.log;
  • PHP-FPM;
  • журналом приложения;
  • системным журналом.
Если запрос появился в access.log, но размер ответа необычно маленький, вероятно, соединение оборвалось после начала передачи страницы.

4. Проверить перезапуски и нехватку ресурсов

Проверить OOM, аварии процессов и перезапуски:

Код: Выделить всё

journalctl --since "2 hours ago" 
| egrep -i 'oom|out of memory|killed process|segfault|core dumped|restart|failed'

journalctl -k --since "2 hours ago" 
| egrep -i 'oom|killed process|segfault|conntrack|reset'
Проверить текущее состояние сервера:

Код: Выделить всё

free -h
df -h
df -i
uptime
vmstat 1
ss -s
Проверить сервисы:

Код: Выделить всё

systemctl status nginx
systemctl status httpd
systemctl status apache2
systemctl status php-fpm
Проверить историю перезапусков:

Код: Выделить всё

journalctl -u nginx --since today
journalctl -u php-fpm --since today
Если сайт работает в Docker:

Код: Выделить всё

docker ps -a
docker stats
docker inspect --format='{{.Name}} restarts={{.RestartCount}}' $(docker ps -aq)
Частая причина ошибки: PHP-FPM, Node.js, Java или контейнер завершается по OOM либо перезапускается уже после того, как веб-сервер начал отдавать ответ пользователю.

Также обязательно проверить:
  • свободную оперативную память;
  • swap;
  • свободное место на диске;
  • количество inode;
  • нагрузку CPU;
  • количество соединений;
  • лимиты процессов и файловых дескрипторов.

5. Проверить таймауты Nginx и reverse proxy

Показать активную конфигурацию:

Код: Выделить всё

nginx -T 2>&1 | grep -E 
'proxy_(connect|read|send)_timeout|fastcgi_read_timeout|send_timeout|keepalive|http2|http3'
Особенно проверить:

Код: Выделить всё

proxy_connect_timeout
proxy_read_timeout
proxy_send_timeout
fastcgi_read_timeout
send_timeout
keepalive_timeout
Если ошибка появляется примерно через 30, 60 или 100 секунд, это важный признак таймаута.

Не следует сразу увеличивать все таймауты. Сначала нужно понять, почему backend перестаёт передавать данные.

Для PHP-FPM проверить:

Код: Выделить всё

php-fpm -tt 2>&1 | grep -E 
'pm.max_children|request_terminate_timeout|request_slowlog_timeout'
Проверить PHP:

Код: Выделить всё

php -i | grep -E 'max_execution_time|memory_limit'
Особенно важны:
Если в журнале есть:

Код: Выделить всё

server reached pm.max_children
значит PHP-FPM не успевает обслуживать все запросы, и нужно проверять нагрузку, медленные запросы и конфигурацию пула.

6. Проверить Apache

Показать конфигурацию Apache:

Код: Выделить всё

apachectl -t -D DUMP_RUN_CFG
apachectl -M
Найти основные параметры:

Код: Выделить всё

grep -R -E 
'^(TimeOut|ProxyTimeout|KeepAlive|KeepAliveTimeout|MaxKeepAliveRequests)' 
/etc/httpd /etc/apache2 2>/dev/null
Проверить:
Если Apache работает как reverse proxy, нужно проверить соединения с backend и повторное использование уже закрытых backend-соединений.

7. Проверить CDN, Cloudflare или балансировщик

Если перед сайтом используется Cloudflare, CDN, HAProxy, Nginx Proxy Manager, AWS ALB или другой балансировщик, нужно сравнить работу через CDN и напрямую с origin-сервером.

Пример:
Проверка напрямую:

Код: Выделить всё

curl -vk 
--resolve site.example.com:443:192.0.2.10 
https://site.example.com/problem-page 
-o /dev/null
Многократная проверка:

Код: Выделить всё

for i in $(seq 1 100); do
curl -sS 
--resolve site.example.com:443:192.0.2.10 
--connect-timeout 10 
--max-time 60 
-o /dev/null 
-w "$i code=%{http_code} bytes=%{size_download} time=%{time_total}\n" 
https://site.example.com/problem-page ||
echo "$i FAILED rc=$?"
done
Интерпретация результата:
  • напрямую origin работает стабильно, а через CDN падает — проблема в CDN, WAF, HTTP/2, HTTP/3 или связи CDN с origin;
  • ошибка возникает и напрямую, и через CDN — проблема на origin-сервере или в backend;
  • origin падает только иногда — проверить несколько backend-серверов, перезапуски и ресурсы;
  • ошибка возникает только на одном узле — один сервер балансировщика неисправен или настроен иначе.
Также нужно проверить журналы Cloudflare или другого CDN, если тариф предоставляет такую возможность.

8. Проверить IPv4 и IPv6

Посмотреть DNS-записи:

Код: Выделить всё

dig +short A site.example.com
dig +short AAAA site.example.com
Сравнить IPv4 и IPv6:

Код: Выделить всё

curl -4 -vk https://site.example.com/ -o /dev/null
curl -6 -vk https://site.example.com/ -o /dev/null
Если IPv4 работает, а IPv6 падает, возможны следующие причины:
  • неправильная AAAA-запись;
  • по IPv6 запрос попадает на другой сервер;
  • Firewall некорректно обрабатывает IPv6;
  • Nginx или Apache слушает IPv6 с другой конфигурацией;
  • у IPv6-сервера неправильный сертификат;
  • на IPv6 используется другой backend;
  • есть проблема с MTU или маршрутизацией.
Если у домена несколько IP-адресов, каждый нужно проверить отдельно:

Код: Выделить всё

curl -vk 
--resolve site.example.com:443:IP_КОНКРЕТНОГО_СЕРВЕРА 
https://site.example.com/ 
-o /dev/null
Если один из нескольких серверов неисправен, ошибка для пользователей будет возникать случайно.

9. Проверить целостность HTTP-ответа

Сохранить заголовки и тело ответа:

Код: Выделить всё

curl -vk --compressed 
-D /tmp/headers.txt 
-o /tmp/body.bin 
https://site.example.com/problem-page

cat /tmp/headers.txt
wc -c /tmp/body.bin
Обратить внимание на заголовки:

Код: Выделить всё

Content-Length
Transfer-Encoding: chunked
Content-Encoding: gzip
Content-Encoding: br
Connection
Возможные проблемы:
  • сервер указал Content-Length, но передал меньше байтов;
  • backend закрыл chunked-ответ до его завершения;
  • PHP или приложение начало вывод страницы, а затем аварийно завершилось;
  • неправильно работает gzip или Brotli;
  • CDN сохранил повреждённый объект в кеше;
  • reverse proxy разорвал соединение во время передачи;
  • приложение отправило некорректные HTTP-заголовки.
Проверка без сжатия:

Код: Выделить всё

curl -vk 
-H 'Accept-Encoding: identity' 
https://site.example.com/problem-page 
-o /dev/null
Если без gzip или Brotli ошибка исчезает, нужно проверить:
  • модуль сжатия веб-сервера;
  • настройки CDN;
  • кеш CDN;
  • двойное сжатие;
  • формирование Content-Length.

10. Проверить сетевые сбросы и Firewall

Проверить таблицу соединений:

Код: Выделить всё

ss -s
ss -tan state established
Проверить conntrack:

Код: Выделить всё

sysctl net.netfilter.nf_conntrack_count
sysctl net.netfilter.nf_conntrack_max
Проверить сообщения ядра:

Код: Выделить всё

dmesg -T | egrep -i 'conntrack|drop|reset|oom|network|tcp'
Если используется firewalld:

Код: Выделить всё

firewall-cmd --list-all
firewall-cmd --list-all-zones
Если используется nftables:

Код: Выделить всё

nft list ruleset
Если используется iptables:

Код: Выделить всё

iptables -L -n -v
iptables -t nat -L -n -v
Для точной диагностики TCP-сбросов можно временно запустить:

Код: Выделить всё

tcpdump -ni any host IP_КЛИЕНТА and port 443
Либо записать дамп:

Код: Выделить всё

tcpdump -ni any port 443 -w /tmp/site-443.pcap
Затем посмотреть, кто именно отправляет TCP RST:
  • клиент;
  • веб-сервер;
  • reverse proxy;
  • балансировщик;
  • Firewall;
  • провайдер.

11. Рекомендуемый порядок диагностики

Проверять лучше в следующем порядке:
  1. Найти точный падающий URL в Firefox Network.
  2. Определить, падает HTML-документ или отдельный API-запрос.
  3. Запустить 100 запросов через curl.
  4. Сравнить HTTP/1.1 и HTTP/2.
  5. Одновременно открыть журналы Nginx, Apache и backend.
  6. Проверить OOM, перезапуски, свободную память и диск.
  7. Сравнить IPv4 и IPv6.
  8. Сравнить обращение через CDN и напрямую к origin.
  9. Проверить, возникает ли ошибка через фиксированное время.
  10. Проверить Content-Length, chunked transfer, gzip и Brotli.
  11. Проверить все серверы, если у домена несколько IP-адресов.
  12. При необходимости снять tcpdump.

12. Какие данные собрать для дальнейшего анализа

Для точного поиска причины желательно собрать:
  • домен сайта;
  • точный URL проблемной страницы;
  • HAR-файл из браузера;
  • время возникновения ошибки с точностью до минуты;
  • результаты curl для HTTP/1.1 и HTTP/2;
  • код завершения curl;
  • 20–30 строк error.log за момент ошибки;
  • строку из access.log;
  • логи PHP-FPM или другого backend;
  • результат проверки IPv4 и IPv6;
  • схему сайта, например:

Код: Выделить всё

Cloudflare → Nginx → PHP-FPM
или:

Код: Выделить всё

Nginx → Apache → PHP
или:

Код: Выделить всё

Cloudflare → HAProxy → несколько backend-серверов
Также полезно указать:
  • используется ли Docker;
  • есть ли несколько серверов;
  • используется ли HTTP/3;
  • возникает ли ошибка только у Firefox или также у Chrome;
  • какие страницы падают чаще всего;
  • происходит ли это во время высокой нагрузки.

[center]Наиболее вероятные причины[/center]
  • перезапуск или авария PHP-FPM/backend;
  • нехватка оперативной памяти и OOM;
  • достижение pm.max_children;
  • таймаут reverse proxy;
  • ошибка HTTP/2 или HTTP/3;
  • неисправный сервер среди нескольких backend;
  • проблема IPv6;
  • обрыв ответа при gzip или Brotli;
  • неправильный Content-Length;
  • сброс соединения Firewall, CDN или балансировщиком;
  • переполнение conntrack;
  • заполненный диск или отсутствие inode.
Главное — не менять настройки вслепую, а сначала определить, на каком участке прерывается соединение:

Код: Выделить всё

Браузер → CDN → reverse proxy → веб-сервер → backend → база данных

pahan
Advanced Member
Сообщения: 5347
Зарегистрирован: 13.03.2015,14:23
Откуда: Химки, М.О.
Благодарил (а): 2 раза
Поблагодарили: 34 раза

Вклад в сообщество

Bugreport

Сообщение pahan » 14.07.2026,15:13

А в DevTools при этом тоже самое - ERR_EMPTY_RESPONSE и абсолютно никаких подробностей по нему. Так что только сервер надо смотреть.
chromewebdata.zip
(13.3 КБ) 14 скачиваний

SuperMax
Advanced Member
Сообщения: 2570
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Благодарил (а): 7 раз
Поблагодарили: 23 раза
Контактная информация:

Конкурсы

Вклад в сообщество

Bugreport

Сообщение SuperMax » 15.07.2026,13:22

сайт смог открыть только раза с 10ого обновлений по F5 / Ctrl+F5
каждая тема - аналогично тыкаешься и постоянно ошибка
как бы проблему надо срочно решать - не все готовы долбить F5 что бы открыть тему

OSA
Advanced Member
Сообщения: 8229
Зарегистрирован: 16.07.2015,00:19
Откуда: Санкт-Петербург
Поблагодарили: 4 раза

Вклад в сообщество

Bugreport

Сообщение OSA » 15.07.2026,16:53

мда, такая проблема только с форумом и почти со всеми темами уже =(

Аватара пользователя
uav1606
Advanced Member
Сообщения: 6110
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Благодарил (а): 5 раз
Поблагодарили: 8 раз
Контактная информация:

Вклад в сообщество

Bugreport

Сообщение uav1606 » 18.07.2026,04:26

У меня вроде нормально. Во всяком случае, сегодня. Я в последнее время редко сюда захожу.

pahan
Advanced Member
Сообщения: 5347
Зарегистрирован: 13.03.2015,14:23
Откуда: Химки, М.О.
Благодарил (а): 2 раза
Поблагодарили: 34 раза

Вклад в сообщество

Bugreport

Сообщение pahan » 18.07.2026,13:43

Ну так последние пару дней оно и работает нормально. Если дело было в нагрузке, видимо очень многие просто перестали заходить.

Ответить