简短介绍
我有位于同一个 EC2 实例上的 Apache Superset 和 Apache2 服务器。Apache2 充当代理服务器。它接受 HTTPS 请求并将它们传输到 Apache Superset。Apache Superset 使用gunicorn
.
问题
对 Apache Dremio 数据引擎的请求可能需要一些时间(< 60 秒)。在 Superset 上访问仪表板时,使用带有 SSL 的 DNS 名称,通过代理设置,某些仪表板部分(请求)失败并出现以下错误:
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request
Reason: Error reading from remote server
ProxyTimeout
奇怪的是,尽管默认值非常高,但这些错误可能会在几秒钟内出现。
如果通过 IP 地址访问 Superset,则不会出现此问题。
中的错误消息apache2/error.log
:
(20014) Internal error (specific information not available): [client 10.4.26.3:6969] AH01102: error reading status line from remote server localhost:8088, referer: ...
试图解决问题的方法
问题可能与代理服务器超时或 Superset Web 服务器断开一些连接有关。我的 Apache2 配置:
<VirtualHost *:443>
ProxyPreserveHost On
ProxyRequests Off
ServerName dash.domain.com
ServerAlias dash.domain.com
SSLEngine on
SSLCertificateFile /etc/ssl/private/cert.crt
SSLCertificateChainFile /etc/ssl/certs/cert2.crt
SSLCertificateKeyFile /etc/ssl/private/key.key
ProxyPass / http://localhost:8088/ connectiontimeout=3600 timeout=3600
ProxyPassReverse / http://localhost:8088/
# things tried
# SetEnv force-proxy-request-1.0 1
# SetEnv proxy-nokeepalive 1
# SetEnv proxy-initial-not-pooled 1
# ProxyTimeout 3600
# TimeOut 3600
</VirtualHost>
测试的东西(但不工作):
Timeout
和ProxyTimeout
connectiontimeout
和timeout
(如上所示)Keepalive=On
代理通行证- 不同的 SetEnv
superset_config.py
-> ENABLE_PROXY_FIX,SUPERSET_WEBSERVER_TIMEOUT
此外,使用 构建了类似的代理设置nginx
,错误与此处描述的类似。
任何帮助或想法将不胜感激。非常感谢!
有用的信息
Apache Superset 版本:0.37.2
Apache Dremio 版本:4.1.0
Apache2服务器版本:2.4.29
EC2 实例类型:t3.medium
操作系统版本:Ubuntu 18.04