Вопрос или проблема
У меня комбинация Apache HTTP Server -> Wildfly и keycloak в качестве аутентификации.
[root@alt-esb-app01 conf.d]$ httpd -version
Версия сервера: Apache/2.4.6 (CentOS)
Сервер собран: 14 ноя 2016 18:04:44
У меня развернут REST API в Wildfly. Я приостанавливаю поток на 7 минут. Логи API работают до 7 минут. Но Postman или Java клиент говорят:
Ответ Postman:
Не удалось получить ответ
Ошибка: read ECONNRESET
GET https://masterdata.test.chintugrator.cosng.net/AccountsService/api/test
Ошибка: read ECONNRESET
Заголовки запроса
Authorization: Basic dXNlcjE6dXNlcjE=
User-Agent: PostmanRuntime/7.29.0
Accept: */*
Cache-Control: no-cache
Postman-Token: bb514333-62ef-4bac-81ca-2d7ac16b7f07
Host: masterdata.chintugrator.cosng.net
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Конфигурация Apache HTTP:
ServerRoot "/etc/httpd"
LoadModule auth_openidc_module modules/mod_auth_openidc.so
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
ServerName esb-app01.unix.cosng.net:80
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/var/www/html"
TimeOut 600
Включен masterdata.conf
<VirtualHost 10.0.1.1:1001>
ServerName masterdata.test.chintugrator.cosng.net
ProxyPreserveHost on
ProxyPass / balancer://masterdata/
ProxyPassReverse / balancer://masterdata
RequestHeader set X-Forwarded-Ssl on
RequestHeader set X-Forwarded-Proto "https"
CustomLog /var/log/httpd/net.cosng.chintugrator.test.masterdata_access.log combined
ErrorLog /var/log/httpd/net.cosng.chintugrator.test.masterdata_error.log
</VirtualHost>
Где еще я могу искать Timeout в HTTPD? Я добавил тайм-аут в VirtualHost, но результаты в Postman остаются прежними.
Может ли это быть связано с настройками фаервола или сети?
wildfly:
Немного поздно, но у меня была аналогичная проблема, и я решил ее сегодня.
В моем случае мой Apache использовал fastcgi, и файл конфигурации, который мне нужно было изменить, был fastcgi.conf: RequestTimeout=”600″ (на 10 минут).
Ответ или решение
Проблема тайм-аутов в Apache HTTP Server с Wildfly и Keycloak
Введение
При использовании сочетания Apache HTTP Server с Wildfly и Keycloak для развертывания REST API можно столкнуться с проблемами, связанными с тайм-аутами. В данной статье мы подробно рассмотрим ваши настройки и предложим возможные решения для устранения проблемы с тайм-аутом API, который срабатывает через 5 минут, несмотря на то, что в конфигурации сервера указан тайм-аут в 10 минут (600 секунд).
Настройки сервера
Ваш текущий конфигурационный файл httpd.conf
выглядит следующим образом:
ServerRoot "/etc/httpd"
LoadModule auth_openidc_module modules/mod_auth_openidc.so
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
ServerName esb-app01.unix.cosng.net:80
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/var/www/html"
TimeOut 600
При этом имеется виртуальный хост с настройками прокси:
<VirtualHost 10.0.1.1:1001>
ServerName masterdata.test.chintugrator.cosng.net
ProxyPreserveHost on
ProxyPass / balancer://masterdata/
ProxyPassReverse / balancer://masterdata
RequestHeader set X-Forwarded-Ssl on
RequestHeader set X-Forwarded-Proto "https"
CustomLog /var/log/httpd/net.cosng.chintugrator.test.masterdata_access.log combined
ErrorLog /var/log/httpd/net.cosng.chintugrator.test.masterdata_error.log
</VirtualHost>
Варианты решения проблемы
1. Проверка конфигурации Apache
Убедитесь, что конфигурационный файл Apache загружен без ошибок. Проверьте файл httpd.conf
на наличие директивы KeepAlive
и настройки KeepAliveTimeout
:
KeepAlive On
KeepAliveTimeout 600
Также обратите внимание на настройки модуля mod_proxy
и его конфигурацию. Возможно, вам потребуется настроить ProxyTimeout
, который может предотвращать тайм-ауты на уровне прокси:
ProxyTimeout 600
2. Проверка настроек Wildfly
Возможная проблема может находиться также в настройках Wildfly. Проверьте конфигурацию вашего HTTP-сервера Wildfly и убедитесь, что тайм-ауты на стороне приложения соответствуют ожиданиям. Изучите настройки, связанные с HTTP или с конкретными ресурсами:
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true">
<http-configuration>
<request-timeout>600</request-timeout>
</http-configuration>
</http-listener>
3. Проверка настроек FastCGI
Если ваше приложение использует FastCGI, как это произошло в другом случае, вам следует проверить конфигурацию FastCGI и установить значение RequestTimeout
на 600 секунд, что позволит избежать преждевременных тайм-аутов.
<IfModule mod_fastcgi.c>
FastCgiConfig -idle-timeout 600
</IfModule>
4. Влияние сети и брандмауэра
Нельзя исключить влияние сетевых настроек или брандмауэра на ваше соединение. Если, например, ваше сетевое оборудование или брандмауэр настроено на 5-минутный тайм-аут для соединений, это может вызывать проблему. Убедитесь, что сетевые настройки соответствуют требованиям вашего приложения.
Заключение
Для устранения проблемы с тайм-аутами API необходимо проверить настройки Apache HTTP Server, настройки Wildfly, конфигурацию FastCGI и сетевые настройки. Убедившись, что все параметры соответствуют требованиям вашего приложения, вы сможете устранить тайм-ауты и обеспечить стабильную работу API.
Рекомендуемые действия:
- Проведите проверку всех настроек, связанных с тайм-аутами.
- Перезапустите сервисы после внесения изменений в конфигурацию.
- Проверьте логи Apache и Wildfly на наличие предупреждений или ошибок.
Эта стратегия обеспечит не только устранение текущей проблемы, но и оптимизацию работы вашего приложения в дальнейшем.