Java中每个servlet线程池的不足

时间:2018-12-01 09:49:18

标签: java undertow

我正在使用Undertow XNIO开发自定义Web应用程序,在该应用程序中,我需要为每个servlet使用不同的线程池(我希望每个servlet都有专用的线程数量)。在接收混合请求时,此Web应用程序具有非常高的吞吐量要求,其中一些请求最终阻塞了我为XNIO创建的所有线程。有没有一种方法可以基于每个servlet指定线程数?

这是我当前的代码:

DeploymentInfo servletBuilder = deployment()
                .setClassLoader(MiniSite.class.getClassLoader())
                .setContextPath(PATH)
                .setDeploymentName("handler.war")
                .addServlets(
                        servlet("BenchMark", BenchMark.class)
                                .addMapping("/health"),
                        servlet("q1", q1.class)
                                .addMapping("/q1"),
                        servlet("q2", q2.class)
                                .addMapping("/q2"),
                        servlet("q3", q3.class)
                                .addMapping("/q3"),
                        servlet("config", Configuration.class)
                                .addMapping("/config")
                );

        DeploymentManager manager = defaultContainer().addDeployment(servletBuilder);
        manager.deploy();

        HttpHandler servletHandler = manager.start();
        PathHandler path = Handlers.path(Handlers.redirect(PATH))
                .addPrefixPath(PATH, servletHandler);

        Undertow server = Undertow.builder()
                .addHttpListener(80, "0.0.0.0")
                .setHandler(path)
                 .setWorkerThreads(1000)
                 .setIoThreads(500)
                .build();
        server.start();

0 个答案:

没有答案