Java Grizzly HTTP Server, работающий на 100% загрузки процессора в некоторых потоках - PullRequest
1 голос
/ 09 апреля 2020

Я использую сервер Grizzly Http на своем веб-сервере для обслуживания REST API. Через некоторое время сервер работает все больше и больше на полную мощность, даже если в сети больше нет пользователей.

В htop я могу видеть, что есть несколько гризли http-потоков (в данный момент на картинке один) которые используют 100% одного кернала. Как это возможно? Есть идеи?

Код:

/* IMPORTS */

public class WebAppServer {

    private static WebAppServer instance;

    public static WebAppServer getInstance() {
        if (instance == null) instance = new WebAppServer();
        return instance;
    }

    public void start() throws IOException, URISyntaxException {
        String baseUrl = MavenPropertyDao.getInstance().getProperty(MavenPropertyDao.REST_SERVER_URL);
        ResourceConfig rc = new MyConfig();
        rc.register(new CORSFilter());
        rc.registerClasses(/* REST CLASSES */);
        final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(new URI(baseUrl), rc);
        Runtime.getRuntime().addShutdownHook(new Thread(server::stop));
        server.start();
    }


    public class MyConfig extends ResourceConfig {
        public MyConfig() {
            register(new HttpExceptionHandler());
            register(MultiPartFeature.class);
            register(GsonProvider.class);
            property(ServerProperties.MONITORING_STATISTICS_ENABLED, true);
        }
    }

}

htop через день: enter image description here

...