如何在 Spark UI 反向代理中增加 Jetty 的标头缓冲区大小



我得到了"HTTP错误502坏网关";当我在我的独立Spark UI中单击工作者链接时。查看主日志,我可以看到相应的消息。。。

HttpSenderOverHTTP.java:219生成的标头(4096字节(、区块(-1字节(、内容(0字节(-HEADER_OVERFLOW/HttpGenerator@231f022d{s=START}

Spark UI前面的网络基础设施确实生成了一个大于4096字节的头,Spark反向代理正试图将其传递给工作UI。如果我绕过该基础结构,UI就会正常工作。

在深入研究了Spark UI代码之后,我相信Jetty ProxyServlet的requestBufferSizeinit参数控制着这一点。

这可以在运行时通过(比如(Java属性来增加吗?例如,类似。。。

SPARK_MASTER_OPTS=-Dorg.eclipse.jetty.proxy.ProxyServlet.requestBufferSize=8192 ...

我尝试过上面的方法,但都没有成功——我对Jetty或Servlet还不够熟悉,不知道这是否接近有效。很明显,我也在寻找减少标头大小的方法,但这涉及到我无法控制的系统。

(Spark v3.0.2/Jetty 9.4(

以下是我被迫使用的解决方法——在Spark UI前面放置一个去掉头部的代理。

我在默认的.conf.…中使用了NGINX

server { 
listen 8080;
location / {
proxy_pass http://my-spark-master:8080/;
proxy_pass_request_headers off;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

我已经与这个502问题斗争了一段时间,事实上,它似乎是由来自上游代理的大标头引起的。我通过删除不需要的标题来解决这个问题。在浏览器中查看,然后使用删除

proxy_set_header接受编码";

举个例子。

谢谢你的小费!Paul

最新更新