2

我在网关类中使用“zuul-core-1.0.28”模块进行路由。在上传几个大小为 50 MB 的文件时,“java.lang.OutOfMemoryError: Java heap space”异常从 Routing 类之一引发,同时将请求转发到适当的 api。转发时,ZuulFilter 尝试解析请求正文(在这种情况下为文件块),这就是它失败并抛出异常的地方

Caused by: java.lang.OutOfMemoryError: Java heap space
    at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:149) ~[na:1.8.0_51]
    at java.lang.StringCoding.decode(StringCoding.java:193) ~[na:1.8.0_51]
    at java.lang.String.<init>(String.java:414) ~[na:1.8.0_51]
    at java.lang.String.<init>(String.java:479) ~[na:1.8.0_51]
    at com.netflix.zuul.http.HttpServletRequestWrapper.parseRequest(HttpServletRequestWrapper.java:167) ~[zuul-core-1.0.28.jar:na]
    at com.netflix.zuul.http.HttpServletRequestWrapper.getInputStream(HttpServletRequestWrapper.java:225) ~[zuul-core-1.0.28.jar:na]
    at javax.servlet.ServletRequest$getInputStream$1.call(Unknown Source) ~[na:na]
    at SimpleHostRoutingFilter.j(SimpleHostRequest.groovy:318) ~[spider.jar:na]
    at SimpleHostRoutingFilter$getRequestBody$2.callCurrent(Unknown Source) ~[na:na]
    at SimpleHostRoutingFilter.run(SimpleHostRequest.groovy:175) ~[spider.jar:na]
    at com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.java:112) ~[zuul-core-1.0.28.jar:2.4.4]
    at com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.java:197) ~[zuul-core-1.0.28.jar:2.4.4]
    at com.netflix.zuul.FilterProcessor.runFilters(FilterProcessor.java:161) ~[zuul-core-1.0.28.jar:2.4.4]
    at com.netflix.zuul.FilterProcessor.route(FilterProcessor.java:120) ~[zuul-core-1.0.28.jar:2.4.4]
    at com.netflix.zuul.ZuulRunner.route(ZuulRunner.java:84) ~[zuul-core-1.0.28.jar:2.4.4]
    at com.netflix.zuul.http.ZuulServlet.route(ZuulServlet.java:111) ~[zuul-core-1.0.28.jar:na]
    at com.netflix.zuul.http.ZuulServlet.service(ZuulServlet.java:77) ~[zuul-core-1.0.28.jar:na]

我知道,特别是这个问题在这里被发布了很多次,并且已经将 JVM 堆大小增加到 1GB,但仍然面临这个问题。此外,我确信在生产中它首先会失败,因为会有成千上万的请求会非常频繁地出现,并且增加内存不会有太大帮助。

任何帮助,将不胜感激。

4

0 回答 0