Jetty 6服务器上的响应延迟时间稳步增加

时间:2015-01-02 21:09:29

标签: java mysql performance jetty

这是基本情景:

我有一个在AWS实例T2.medium上运行的Jetty服务器。

此服务器包含3个REST服务:A,B和C.

我的客户端,这是在我的本地eclipse中运行的java类

  • 为服务A创建约400个对象
  • 之后,它为每个A(2000)
  • 创建5个B对象
  • 最后每个B(10000)的另外5个C对象。

最后,我们创建了大约15,000个对象。

执行所有15,000个对象需要45-50分钟。 在前100个请求期间,一切都很好,很漂亮,每个请求需要大约25到30毫秒。

在800次请求之后,事情并不是很好,需要大约161ms到182ms才能完成每个请求。

这个时间不断增加,直到达到1300ms到1321ms才能完成每个请求。最后,在大约10,000个请求之后,每个请求大约需要3000毫秒才能完成。

我没有运行多个线程来执行请求。 我没有在这个VM中运行其他服务。 我在RDS实例上使用MySql。

* Ohhh还有一件事,如果我重新启动Jetty并尝试再次创建对象,行为会不断重复,它以30ms开始并达到3000ms。这让我觉得它与jetty上的线程池有关。

我用来启动码头的代码是:

    QueuedThreadPool threadPool = new QueuedThreadPool(100);
    threadPool.setMinThreads(100);
    threadPool.setMaxThreads(700);
    threadPool.setMaxIdleTimeMs(3000);

    httpServer = new Server(port);
    httpServer.setThreadPool(threadPool);
    ContextHandlerCollection contexts = new ContextHandlerCollection();
    httpServer.setHandler(contexts);

    Context root = new Context(contexts, "/", Context.SESSIONS);
    GenericWebApplicationContext springContext = new GenericWebApplicationContext();
    springContext.setParent(new ClassPathXmlApplicationContext("/education/applicationContext.xml"));
    root.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,springContext);

    Context html = new Context(contexts, "/html", Context.SESSIONS);
    ResourceHandler htmlHandler = new ResourceHandler();
    htmlHandler.setResourceBase("src/main/webapp");
    html.setHandler(htmlHandler);

    ServletHolder holder = new ServletHolder(CXFServlet.class);
    root.addServlet(holder, "/rest/*");
    try {
        httpServer.start();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

几分钟后我开始看到以下异常:

**

20:30:34.556 [509681393@qtp-1095433972-667] DEBUG org.mortbay.log - EXCEPTION 
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:196) ~[na:1.7.0_65]
at java.net.SocketInputStream.read(SocketInputStream.java:122) ~[na:1.7.0_65]
at org.mortbay.io.ByteArrayBuffer.readFrom(ByteArrayBuffer.java:382) ~[jetty-6.1.26.jar:6.1.26]
at org.mortbay.io.bio.StreamEndPoint.fill(StreamEndPoint.java:114) ~[jetty-6.1.26.jar:6.1.26]
at org.mortbay.jetty.bio.SocketConnector$Connection.fill(SocketConnector.java:198)     [jett6.1.26.jar:6.1.26]
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:290) [jetty-6.1.26.jar:6.1.26]
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) [jetty-6.1.26.jar:6.1.26]
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) [jetty-6.1.26.jar:6.1.26]
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) [jetty-    6.1.26.jar:6.1.26]
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) [jetty-    util-6.1.26.jar:6.1.26]

20:30:34.555 [867433358@qtp-1095433972-664] DEBUG org.mortbay.log - EXCEPTION 
20:30:34.563 [509681393@qtp-1095433972-667] DEBUG org.mortbay.log - EOF

**

0 个答案:

没有答案