記一次關於系統出現502異常的解決方案


最近線上服務器莫名出現某些請求出現502的現象,查看了nginx的error.log,發現看一個異常報錯

 upstream prematurely closed connection while reading response header from upstream(讀取響應頭時過早關閉連接)

應用程序方面也補抓到了一系列的異常

2022-03-17 08:38:08.943 [http-nio-8080-exec-30] ERROR o.a.c.c.C.[.[.[/heygood-crm].[dispatcherServlet]:175 - Servlet.service() for servlet [dispatcherServlet] in context with path [/heygood-crm] threw exception
java.lang.NullPointerException: null
    at java.util.Objects.requireNonNull(Objects.java:203)
    at io.micrometer.core.instrument.ImmutableTag.<init>(ImmutableTag.java:35)
    at io.micrometer.core.instrument.Tag.of(Tag.java:29)
    at org.springframework.boot.actuate.metrics.web.servlet.WebMvcTags.method(WebMvcTags.java:85)
    at org.springframework.boot.actuate.metrics.web.servlet.DefaultWebMvcTagsProvider.getTags(DefaultWebMvcTagsProvider.java:36)
    at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.lambda$record$0(WebMvcMetricsFilter.java:166)2022-03-17 08:38:09.424 [http-nio-8080-exec-15] ERROR org.apache.coyote.http11.Http11Processor:175 - Error processing request
java.lang.AssertionError: null
    at org.apache.catalina.mapper.Mapper.internalMap(Mapper.java:744)
    at org.apache.catalina.mapper.Mapper.map(Mapper.java:702)
    at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:696)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:337)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at java.lang.Thread.run(Thread.java:745)

了解了一下,是沒有讀取到相應的method方法以及獲取請求頭有問題

大概猜測了一下,應該是tcp請求還沒有完成,但是相應的代理服務器關閉了請求,導致數據不完整會有這樣的異常,出現這樣的原因是因為我們用了阿里的slb負載均衡,而slb負載均衡對於http1.1的keep-live的時間為60s,

但是我們本地又做了一層的nginx,nigix默認的keep-live時間為75s,導致slb關閉但是本地nigix還未關閉數據傳輸出現問題,后面配置nginx中的keepalive_timeout 59s;

暫時解決了問題

具體還等待分析

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM