Причал приоритетное лечение проверок здоровья? - PullRequest
0 голосов
/ 21 мая 2018

Мой Jetty обслуживает запросы к / myservice / *

Моя проблема заключается в том, что, когда очередь сервера заполняется, запросы проверки работоспособности на / healthcheck начинают давать сбой.

Возможно лиесть отдельная очередь для моих проверок работоспособности, или есть ли другой способ сделать это? import java.io.IOException;

Вот пример сервера:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletHandler;
import org.eclipse.jetty.util.thread.QueuedThreadPool;

/**
 * Based on:
 * https://www.eclipse.org/jetty/documentation/9.4.x/embedded-examples.html
 */
public class HealthCheckServer
{
    public static void main( String[] args ) throws Exception
    {
        Server server = new Server(8086);

        QueuedThreadPool qtp = (QueuedThreadPool) server.getThreadPool();
        qtp.setMaxThreads(6);

        ServletHandler handler = new ServletHandler();
        server.setHandler(handler);


        handler.addServletWithMapping(HelloServlet.class, "/hello");
        handler.addServletWithMapping(HealthServlet.class, "/health");

        server.start();

        server.join();
    }

    @SuppressWarnings("serial")
    public static class HelloServlet extends HttpServlet
    {
        @Override
        protected void doGet( HttpServletRequest request,
                              HttpServletResponse response ) throws ServletException,
                                                            IOException
        {
            try {
                Thread.sleep(10*1000); // 10 sec
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            response.setContentType("text/html");
            response.setStatus(HttpServletResponse.SC_OK);
            response.getWriter().println("<h1>Hello from HelloServlet</h1>");
        }
    }

    @SuppressWarnings("serial")
    public static class HealthServlet extends HttpServlet
    {
        @Override
        protected void doGet( HttpServletRequest request,
                              HttpServletResponse response ) throws ServletException,
                                                            IOException
        {
            response.setContentType("text/html");
            response.setStatus(HttpServletResponse.SC_OK);
            response.getWriter().println("all good captain");
        }
    }
}

Если вы нажмете http://localhost:8086/hello 4 раза, тогда http://localhost:8086/health не будет реагировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...