首页 > 解决方案 > Spring Boot Show Error with tomcat 8 connection pool打开的文件太多

问题描述

有人可以帮忙吗?

我有应用程序,我在 Spring Boot 中使用 context.xml 中的连接池使用外部 Tomcat 8。

但是当我用线程调用时,几分钟后会出现错误。

看看我的代码和配置:

TKS 4 全部!!!

上下文.xml

 <Resource name="jdbc/ocp-api" auth="Container"
 type="javax.sql.DataSource"
                  maxTotal="150"
                    max-active= "100" 
                   max-idle= "80"
                    min-idle="8"
                    maxWaitMillis="2000"
                    username="postgres" 
                    password="postgres" 
                    driverClassName="org.postgresql.Driver"
                    url="jdbc:postgresql://<myIpServer>:5432/db_ocp_ago2017"/>

应用程序属性

spring.datasource.jndi-name=jdbc/ocp-api



spring.jpa.show-sql=true

spring.application.name=ocp-api
server.contextPath=/ocp-api
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss.SSSZ
spring.jackson.joda-date-time-format=yyyy-MM-dd' 'HH:mm:ss.SSSZ

logging.level.org.springframework.web=ERROR
logging.level.com.mkyong=DEBUG


# Logging pattern for the console
logging.pattern.console= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

# Logging pattern for file
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"

logging.file=/var/supportcomm/ocp/log/ocp-api.log
flyway.baselineOnMigrate=true

2018 年 7 月 26 日 16:40:29.049 警告 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.deploy.NamingResourcesImpl.cleanUp 无法检索容器 [StandardEngine[Catalina].StandardHost[localhost] 的 JNDI 命名上下文。 StandardContext[/ocp-api]] 所以没有对该容器执行清理

javax.naming.NameNotFoundException:名称 [comp/env] 未绑定在此上下文中。无法找到 [comp]。在 org.apache.naming.NamingContext.lookup(NamingContext.java:824) 在 org.apache.naming.NamingContext.lookup(NamingContext.java:172) 在 org.apache.catalina.deploy.NamingResourcesImpl.cleanUp(NamingResourcesImpl.java :993) 在 org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:221) 在 org.apache.catalina.core 的 org.apache.catalina.deploy.NamingResourcesImpl.stopInternal(NamingResourcesImpl.java:975)。 StandardContext.stopInternal(StandardContext.java:5551) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:221) at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:259) at org .apache.catalina.core.ContainerBase。

“2018-07-26 16:51:27 - 由于响应已经提交,因此无法转发到请求的错误页面 [/occupation]。因此,响应可能具有错误的状态代码。如果您的应用程序正在运行WebSphere Application Server 您可以通过将 com.ibm.ws.webcontainer.invokeFlushAfterService 设置为 false “org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe at org.apache.catalina. connector.OutputBuffer.realWriteBytes(OutputBuffer.java:396) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:426) at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java: 345) 在 org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:320) 在 org.apache.catalina.connector。CoyoteOutputStream.flush(CoyoteOutputStream.java:110) 在 com.fasterxml.jackson.core.json.UTF8JsonGenerator.flush(UTF8JsonGenerator.java:1054) 在 com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:607)在 org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:106) 在 org.springframework.web.servlet.mvc 的 org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:286) .method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:231) 在 org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:203) 在 org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:113) 在 org.springframework.web.servlet.mvc.method.annotation. org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81) .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org .springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 在 org.springframework.web.servlet.FrameworkServlet .doGet(FrameworkServlet.java:861) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 在 javax.servlet。 http.HttpServlet.service(HttpServlet.java:729) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)901) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:622) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 在 org.apache.catalina。 core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)901) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:622) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 在 org.apache.catalina。 core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)861) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 在 javax.servlet.http.HttpServlet.service(HttpServlet .java:729) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)861) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 在 javax.servlet.http.HttpServlet.service(HttpServlet .java:729) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

原因:java.io.IOException:sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) at sun.nio.ch.FileDispatcherImpl.write0(Native Method) at sun.nio.ch.IOUtil 的 Broken pipe .writeFromNativeBuffer(IOUtil.java:93) 在 sun.nio.ch.IOUtil.write(IOUtil.java:65) 在 sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) 在 org.apache.tomcat。 util.net.NioChannel.write(NioChannel.java:124) at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101) at org.apache.tomcat.util.net.NioSelectorPool.write( NioSelectorPool.java:172) 在 org.apache.coyote.http11.InternalNioOutputBuffer.writeToSocket(InternalNioOutputBuffer.java:139) 在 org.apache.coyote.http11.InternalNioOutputBuffer.addToBB(InternalNioOutputBuffer.java:197) 在 org.apache.coyote.http11.InternalNioOutputBuffer$SocketOutputBuffer.doWrite(InternalNioOutputBuffer.java:320) 在 org.apache.coyote 的 org.apache.coyote.http11.InternalNioOutputBuffer.access$000(InternalNioOutputBuffer.java:41)。 http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:118) at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:256) at org.apache.coyote.Response.doWrite(Response.java:491)在 org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:391) ... 省略了 66 个常用帧320) 在 org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:256) 在 org.apache.coyote.Response 的 org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:118) org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:391) 的 .doWrite(Response.java:491) ... 省略了 66 个常用帧320) 在 org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:256) 在 org.apache.coyote.Response 的 org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:118) org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:391) 的 .doWrite(Response.java:491) ... 省略了 66 个常用帧

2018 年 7 月 26 日 16:52:20.989 严重 [http-nio-8280-Acceptor-0] org.apache.tomcat.util.net.NioEndpoint$Acceptor.run 套接字接受失败 java.io.IOException:打开的文件太多在 sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) 在 sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422) 在 sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250) 在 org .apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:693) 在 java.lang.Thread.run(Thread.java:745)

[pool-24-thread-14] 警告 org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL 错误:0,SQLState:08001"2018-07-26 16:52:32 - SQL 错误:0,SQLState:空2018-07-26 16:52:32 - SQL 错误:0,SQLState:空 2018-07-26 16:52:32 - SQL 错误:0,SQLState:空 2018-07-26 16:52:32 - SQL错误:0,SQLState:空 2018-07-26 16:52:32 - SQL 错误:0,SQLState:空 2018-07-26 16:52:32 - SQL 错误:0,SQLState:空 2018-07-26 16:52:33 - java.io.FileNotFoundException:/vol/app/apache-tomcat-8.0.38/webapps/ocp-api/WEB-INF/lib/jackson-core-2.8.10.jar(打开的太多文件)2018-07-26 16:52:34 - java.io.FileNotFoundException:/vol/app/apache-tomcat-8.0.38/webapps/ocp-api/WEB-INF/lib/jackson-core-2.8。 10.jar(打开的文件太多)2018-07-26 16:52:34 - java.io.FileNotFoundException: /vol/app/apache-tomcat-8.0.38/webapps/ocp-api/WEB-INF/lib/jackson-core-2.8.10.jar(打开的文件太多)

标签: spring-boottomcat8connection-pool

解决方案


推荐阅读