My Oracle Support Banner

HTTP リクエストがリセットされた際、アイドルのソケットがリークする場合があります (Doc ID 2103832.1)

Last updated on OCTOBER 19, 2018

適用範囲:

Oracle WebLogic Server - バージョン 10.3.6 以降
この文書の内容はすべてのプラットフォームに適用されます。

現象

この問題は特定の機能が正常に動作しないといった問題ではありません。しかし、次に示す症状のように WebLogic Server が稼動している Java VM で、メモリ使用量の増加が確認できます。また、Unix の "netsat -an" コマンドで、アイドルソケットのリークが確認できます: 

TCP: IPv4
   Local Address        Remote Address    Swind Send-Q Rwind Recv-Q    State
-------------------- -------------------- ----- ------ ----- ------ -----------

      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE
      *.*                  *.*                0      0 49152      0 IDLE

WebLogic 管理コンソールでも、サーバを再起動するまで、接続がリークする状況を確認できます:

チャネル・統計値
Name                                            Connections     Messages Received     Messages Sent     Bytes Received     Bytes Sent    Accept Count
Default[http://10.23.456.789:10360]    16        189                              172                       172613                  1001432        52

次の例外が WebLogic Server の標準出力で確認できます。下記例外が断続的に発生します。この例外は HTTP GET 呼び出しに関連していますが、必ずしも発生するわけではありません。

#### <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <> <[ServletContext@251449240[app:Service module:/Service/ServiceServer path:/Service/ServiceServer spec-version:2.5]] Root cause of ServletException.
java.io.IOException: Broken pipe
at com.sun.xml.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:268)
at com.sun.xml.ws.transport.http.HttpAdapter.publishWSDL(HttpAdapter.java:610)
at weblogic.wsee.jaxws.WLSServletAdapter.publishWSDL(WLSServletAdapter.java:252)
at weblogic.wsee.jaxws.WLSServletAdapter.handle(WLSServletAdapter.java:166)
at weblogic.wsee.jaxws.HttpServletAdapter.get(HttpServletAdapter.java:193)
at weblogic.wsee.jaxws.JAXWSServlet.doRequest(JAXWSServlet.java:97)
at weblogic.servlet.http.AbstractAsyncServlet.service(AbstractAsyncServlet.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:184)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3750)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3714)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2283)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2182)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused By: com.ctc.wstx.exc.WstxIOException: Broken pipe
at com.ctc.wstx.sw.BaseNsStreamWriter.doWriteStartTag(BaseNsStreamWriter.java:617)
at com.ctc.wstx.sw.SimpleNsStreamWriter.writeStartOrEmpty(SimpleNsStreamWriter.java:265)
at com.ctc.wstx.sw.BaseNsStreamWriter.writeStartElement(BaseNsStreamWriter.java:313)
at com.sun.xml.ws.util.xml.XMLStreamWriterFilter.writeStartElement(XMLStreamWriterFilter.java:217)
at weblogic.wsee.jaxws.framework.policy.PatchFilter.writeStartElement(WSDLPatchFilter.java:264)
at com.sun.xml.ws.util.xml.XMLStreamReaderToXMLStreamWriter.handleStartElement(XMLStreamReaderToXMLStreamWriter.java:166)
at com.sun.xml.ws.server.WSDLPatcher.handleStartElement(WSDLPatcher.java:205)
at com.sun.xml.ws.util.xml.XMLStreamReaderToXMLStreamWriter.bridge(XMLStreamReaderToXMLStreamWriter.java:105)
at com.sun.xml.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:291)
at com.sun.xml.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:265)
at com.sun.xml.ws.transport.http.HttpAdapter.publishWSDL(HttpAdapter.java:610)
at weblogic.wsee.jaxws.WLSServletAdapter.publishWSDL(WLSServletAdapter.java:252)
at weblogic.wsee.jaxws.WLSServletAdapter.handle(WLSServletAdapter.java:166)
at weblogic.wsee.jaxws.HttpServletAdapter.get(HttpServletAdapter.java:193)
at weblogic.wsee.jaxws.JAXWSServlet.doRequest(JAXWSServlet.java:97)
at weblogic.servlet.http.AbstractAsyncServlet.service(AbstractAsyncServlet.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
....
Caused By: java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at weblogic.servlet.internal.ChunkOutput.writeChunkTransfer(ChunkOutput.java:568)
at weblogic.servlet.internal.ChunkOutput.writeChunks(ChunkOutput.java:539)
at weblogic.servlet.internal.ChunkOutput.flush(ChunkOutput.java:427)
at weblogic.servlet.internal.CharsetChunkOutput.flush(CharsetChunkOutput.java:298)
at weblogic.servlet.internal.ChunkOutput$2.checkForFlush(ChunkOutput.java:648)
at weblogic.servlet.internal.CharsetChunkOutput.write(CharsetChunkOutput.java:200)
at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java:148)
at weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:148)
at weblogic.wsee.jaxws.HttpServletAdapter$RequestResponseWrapper$OutputStreamWrapper.write(HttpServletAdapter.java:506)
at com.ctc.wstx.io.UTF8Writer.write(UTF8Writer.java:143)
at com.ctc.wstx.sw.BufferingXmlWriter.flushBuffer(BufferingXmlWriter.java:1358)
at com.ctc.wstx.sw.BufferingXmlWriter.fastWriteRaw(BufferingXmlWriter.java:1404)
at com.ctc.wstx.sw.BufferingXmlWriter.writeStartTagStart(BufferingXmlWriter.java:750)
at com.ctc.wstx.sw.BaseNsStreamWriter.doWriteStartTag(BaseNsStreamWriter.java:612)
at com.ctc.wstx.sw.SimpleNsStreamWriter.writeStartOrEmpty(SimpleNsStreamWriter.java:265)
at com.ctc.wstx.sw.BaseNsStreamWriter.writeStartElement(BaseNsStreamWriter.java:313)
at com.sun.xml.ws.util.xml.XMLStreamWriterFilter.writeStartElement(XMLStreamWriterFilter.java:217)
at weblogic.wsee.jaxws.framework.policy.PatchFilter.writeStartElement(WSDLPatchFilter.java:264)
at com.sun.xml.ws.util.xml.XMLStreamReaderToXMLStreamWriter.handleStartElement(XMLStreamReaderToXMLStreamWriter.java:166)
at com.sun.xml.ws.server.WSDLPatcher.handleStartElement(WSDLPatcher.java:205)
at com.sun.xml.ws.util.xml.XMLStreamReaderToXMLStreamWriter.bridge(XMLStreamReaderToXMLStreamWriter.java:105)
at com.sun.xml.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:291)
at com.sun.xml.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:265)
at com.sun.xml.ws.transport.http.HttpAdapter.publishWSDL(HttpAdapter.java:610)
at weblogic.wsee.jaxws.WLSServletAdapter.publishWSDL(WLSServletAdapter.java:252)
at weblogic.wsee.jaxws.WLSServletAdapter.handle(WLSServletAdapter.java:166)
at weblogic.wsee.jaxws.HttpServletAdapter.get(HttpServletAdapter.java:193)
at weblogic.wsee.jaxws.JAXWSServlet.doRequest(JAXWSServlet.java:97)
at weblogic.servlet.http.AbstractAsyncServlet.service(AbstractAsyncServlet.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
...

ヒープダンプではこのオブジェクトでリークを認められます: 122,753,656 bytes (15.1 %) of Java heap is used by 726 instances of weblogic/utils/collections/WeakConcurrentHashMap$Entry

weblogic.socket.DevPollSocketInfo オブジェクトのリークがヒープダンプから確認できます:

 class Name                                             | Objects | Shallow Heap | Retained Heap

 --------------------------------------------------------------------------
 weblogic.socket.DevPollSocketInfo      |   1,189  |          47,592  |   47,592
 --------------------------------------------------------------------------



原因

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


本書の内容
現象
原因
解決策
参照情報

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.