Я использую сервер 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 через день: