Назад | Перейти на главную страницу

как исправить apache2 «proxy_http: error» AH01102: ошибка чтения строки состояния с удаленного сервера localhost: 4382

как исправить apache2 "proxy_http: error" AH01102: ошибка чтения строки состояния с удаленного сервера localhost: 4382.

У меня есть веб-сервер apache2, который используется для обслуживания нескольких приложений nodejs в бэкэнде.

Версия веб-сервера Apache2: Версия сервера: Apache / 2.4.41 (Ubuntu) Сервер построен: 2019-08-21T20: 43: 05

Версия Nodejs: v10.18.1

Версия Mongo db: v4.0.15

Мы были поражены этой ошибкой / ошибками (см. Журналы) во всех наших серверных приложениях "proxy_http: error" AH01102: ошибка чтения строки состояния с удаленного сервера localhost: 4382.

[Mon Apr 27 20:09:05.697271 2020] [proxy_http:error] [pid 26792:tid 140063099688704] (70007)The timeout specified has expired: [client 178.153.198.97:52385] AH01095: prefetch request body failed to 127.0.0.1:4381 (localhost) from 178.153.198.97 (), referer: https://www.example.com/sub-admin/menus/add-menu
[Mon Apr 27 20:21:51.617095 2020] [proxy_http:error] [pid 26764:tid 140062901626624] (104)Connection reset by peer: [client 178.153.195.206:61268] AH01102: error reading status line from remote server localhost:4382, referer: http://www.example.com/restaurant/dashboard
[Mon Apr 27 20:21:51.617117 2020] [proxy:error] [pid 26764:tid 140062901626624] [client 178.153.195.206:61268] AH00898: Error reading from remote server returned by /restaurant/assets/img/avatars/5.jpg, referer: http://www.example.com/restaurant/dashboard
[Tue Apr 28 03:51:28.498423 2020] [proxy_http:error] [pid 26793:tid 140062868055808] (104)Connection reset by peer: [client 89.211.117.185:57622] AH01102: error reading status line from remote server localhost:4382, referer: http://www.example.com/restaurant/dashboard
[Tue Apr 28 03:51:28.498455 2020] [proxy:error] [pid 26793:tid 140062868055808] [client 89.211.117.185:57622] AH00898: Error reading from remote server returned by /restaurant/static/css/main.f8d32764.chunk.css, referer: http://www.example.com/restaurant/dashboard


До сих пор я пробовал эти вещи, чтобы исправить эту ошибку.

  1. ProxyPreserveHost On - Не сработало.

  2. disablereuse = включено. Это не сработало.

  3. Тайм-аут = 600, затем Тайм-аут = 900. Не сработало.

  4. повторная попытка = 1 получение = 3000 тайм-аут = 600 Поддержка активности = Вкл. Не сработало.

  5. SetEnv force-proxy-request-1.0 1
    SetEnv прокси-nokeepalive 1

Работали недолго (12 часов). Опять же, та же ошибка воспроизводится почти с той же частотой, что и раньше.

  1. SetEnv прокси-начальный-не-пул 1
    SetEnv прокси-nokeepalive 1

Этот работал 24 часа. Затем через 24 часа эта ошибка была воспроизведена. Хотя на этот раз через 24 часа ошибка возникает только один раз в час, иногда только раз в два часа, иногда раз в два-пять часов.

1 кв. Прежде всего, почему происходит эта ошибка.

2кв. Эта ошибка возникает только из-за приложения apache или nodejs, также может быть виновником
(Но при возникновении этой ошибки apache почти нет журналов ошибок приложения).

3кв. Как / Каков наилучший способ идентифицировать, диагностировать и устранить эту ошибку, потому что после поиска на различных форумах никто, похоже, не решил эту ошибку идеально или не нашел на нее правильного ответа, и это было так с 2006 года, глядя на некоторых форумах.

Вот мой файл конфигурации apache

<VirtualHost *:443>
  ServerAdmin root@example.com
  ServerName  www.example.com
  ServerAlias example.com

  SSLEngine On
  SSLProxyEngine On
  SSLCertificateFile "/etc/ssl/private/server.crt"
  SSLCertificateKeyFile "/etc/ssl/private/server.key"


  ProxyRequests Off

    #Admin
    ProxyPass /admin http://localhost:4380/
    ProxyPassReverse /admin http://localhost:4380/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1


    ProxyPass /restaurant http://localhost:4382/
    ProxyPassReverse /restaurant http://localhost:4382/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1


    ProxyPass /sub-admin http://localhost:4385/
    ProxyPassReverse /sub-admin http://localhost:4385/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1


    #API
    ProxyPass /admin-api/ http://localhost:4381/
    ProxyPassReverse /admin-api/ http://localhost:4381/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1


    ProxyPass /restaurant-api/ http://localhost:4379/
    ProxyPassReverse /restaurant-api/ http://localhost:4379/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1


</VirtualHost>


Если вы посмотрите свой журнал, сначала появится (70007) Указанный тайм-аут истек: [клиент 178.153.198.97:52385] AH01095 остальная часть журнала является своего рода следствием этого.

Здесь происходит то, что вашей реализации localhost требуется много времени, чтобы вернуть ответ. Возможно, вы сможете проверить в своей реализации, почему это так, и попытаться оптимизировать его. Но в apache вы можете определить время подключения и тайм-аут для ожидания реализации localhost.

ProxyPass / ресторан http: // localhost: 4382 / connectiontimeout =[время в секундах] тайм-аут =[время в секундах [

например 60 секунд (1 мин)

ProxyPass / ресторан http: // localhost: 4382 / connectiontimeout = 60 timeout = 60