您的位置:首页 > 移动开发 > WebAPP

: The response of the WebApplicationException cannot be utilized as the response is already committe

2012-08-28 17:41 483 查看
参考文档:http://www.testwo.com/space-7639-do-blog-id-5532.html

性能测试遇到问题,正在找答案

May 2, 2012 2:40:22 PM com.sun.jersey.server.impl.application.WebApplicationImpl _handleRequest

SEVERE: The response of the WebApplicationException cannot be utilized as the response is already committed. Re-throwing to the HTTP container

javax.ws.rs.WebApplicationException: javax.xml.bind.MarshalException

- with linked exception:

[javax.xml.stream.XMLStreamException: org.mortbay.jetty.EofException]

at com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.writeTo(AbstractRootElementProvider.java:151)

at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:289)

at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1029)

at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:941)

at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:932)

at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:384)

at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:451)

at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:632)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)

at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)

at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)

at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)

at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)

at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)

at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)

at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)

at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)

at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)

at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)

at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)

at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)

at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)

at org.mortbay.jetty.Server.handle(Server.java:326)

at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)

at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)

at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)

at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)

at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)

at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)

at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

Caused by: javax.xml.bind.MarshalException

- with linked exception:

[javax.xml.stream.XMLStreamException: org.mortbay.jetty.EofException]

at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:322)

at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:172)

at com.sun.jersey.json.impl.BaseJSONMarshaller.marshallToJSON(BaseJSONMarshaller.java:100)

at com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider.writeTo(JSONRootElementProvider.java:111)

at com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.writeTo(AbstractRootElementProvider.java:149)

... 31 more

Caused by: javax.xml.stream.XMLStreamException: org.mortbay.jetty.EofException

at com.sun.jersey.json.impl.writer.JsonXmlStreamWriter.flush(JsonXmlStreamWriter.java:184)

at com.sun.xml.bind.v2.runtime.output.XMLStreamWriterOutput.endDocument(XMLStreamWriterOutput.java:107)

at com.sun.xml.bind.v2.runtime.XMLSerializer.endDocument(XMLSerializer.java:855)

at com.sun.xml.bind.v2.runtime.MarshallerImpl.postwrite(MarshallerImpl.java:369)

at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:316)

... 35 more

Caused by: org.mortbay.jetty.EofException

at org.mortbay.jetty.HttpGenerator.flush(HttpGenerator.java:789)

at org.mortbay.jetty.AbstractGenerator$Output.flush(AbstractGenerator.java:568)

at org.mortbay.jetty.HttpConnection$Output.flush(HttpConnection.java:1010)

at com.sun.jersey.spi.container.servlet.WebComponent$Writer.flush(WebComponent.java:284)

at com.sun.jersey.spi.container.ContainerResponse$CommittingOutputStream.flush(ContainerResponse.java:141)

5000用户

java.io.IOException: Too many open files

at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)

at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:163)

at org.mortbay.jetty.nio.SelectChannelConnector$1.acceptChannel(SelectChannelConnector.java:75)

at org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:664)

at org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:191)

at org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124)

at org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:708)

at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

609325651 [169456094@qtp-589409152-9 - Acceptor0 SelectChannelConnector@0.0.0.0:8080] WARN org.mortbay.log - EXCEPTION

java.io.IOException: Too many open files

at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)

at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:163)

at org.mortbay.jetty.nio.SelectChannelConnector$1.acceptChannel(SelectChannelConnector.java:75)

at org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:664)

at org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:191)

at org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124)

at org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:708)

at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

609325651 [169456094@qtp-589409152-9 - Acceptor0 SelectChannelConnector@0.0.0.0:8080] WARN org.mortbay.log - EXCEPTION

1. 使用ps -ef |grep java (java代表你程序,查看你程序进程) 查看你的进程ID,记录ID号,假设进程ID为12

2. 使用:lsof -p 12 | wc -l 查看当前进程id为12的 文件操作状况

执行该命令出现文件使用情况为 1052

3. 使用命令:ulimit -a 查看每个用户允许打开的最大文件数

发现系统默认的是open files (-n) 1024,问题就出现在这里。

4. 然后执行:ulimit -n 4096

将open files (-n) 1024 设置成open files (-n) 4096

这样就增大了用户允许打开的最大文件数

3000用户 JVM bugs

621371954 [1839367010@qtp-589409152-8 - Acceptor1 SelectChannelConnector@0.0.0.0:8080] INFO org.mortbay.log - org.mortbay.io.nio.SelectorManager$SelectSet@f2162f4 JVM BUG(s) - recreating selector 57 times, canceled keys 206 times

621431966 [1839367010@qtp-589409152-8 - Acceptor1 SelectChannelConnector@0.0.0.0:8080] INFO org.mortbay.log - org.mortbay.io.nio.SelectorManager$SelectSet@f2162f4 JVM BUG(s) - injecting delay56 times

http://jira.codehaus.org/browse/JETTY-937

http://wiki.eclipse.org/Jetty/Feature/JVM_NIO_Bug
http://wiki.eclipse.org/Jetty/Howto/High_Load#Jetty_Tuning
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐