Discussion:
[jetty-users] Priority treatment of health checks?
Benjamin Jaton
2018-05-24 17:22:23 UTC
Permalink
Greetings,

I've asked a question on SO a few days back:
https://stackoverflow.com/questions/50455251/jetty-priority-treatment-of-health-checks

---
My Jetty is servicing requests on /myservice/*

My problem is that when the server's queue gets full, the health check
requests on /healthcheck start failing.

Is it possible to have a separate queue for my health checks, or is there
another way to do this?

(code sample)
----

I'm trying my chance in here, maybe someone has tried to do this before and
has thoughts about it?

Thanks
Benjamin
Jesse McConnell
2018-05-24 18:04:15 UTC
Permalink
I know some folks set up a separate connector on a different port for
health checks like this with its own thread pool.

Jesse

--
jesse mcconnell
Post by Benjamin Jaton
Greetings,
https://stackoverflow.com/questions/50455251/jetty-priority-treatment-of-health-checks
---
My Jetty is servicing requests on /myservice/*
My problem is that when the server's queue gets full, the health check
requests on /healthcheck start failing.
Is it possible to have a separate queue for my health checks, or is there
another way to do this?
(code sample)
----
I'm trying my chance in here, maybe someone has tried to do this before
and has thoughts about it?
Thanks
Benjamin
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Benjamin Jaton
2018-05-24 18:46:02 UTC
Permalink
But isn't the thread pooling configured at the level of the server?

Server server = new Server(8086);
QueuedThreadPool qtp = (QueuedThreadPool) server.getThreadPool();
qtp.setMaxThreads(6);
Post by Jesse McConnell
I know some folks set up a separate connector on a different port for
health checks like this with its own thread pool.
Jesse
--
jesse mcconnell
Post by Benjamin Jaton
Greetings,
https://stackoverflow.com/questions/50455251/jetty-
priority-treatment-of-health-checks
---
My Jetty is servicing requests on /myservice/*
My problem is that when the server's queue gets full, the health check
requests on /healthcheck start failing.
Is it possible to have a separate queue for my health checks, or is there
another way to do this?
(code sample)
----
I'm trying my chance in here, maybe someone has tried to do this before
and has thoughts about it?
Thanks
Benjamin
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Jesse McConnell
2018-05-24 20:51:34 UTC
Permalink
Sorry, called Executors now in this context, if you check out the
constructors for the ServerConnector you should see some javadoc about how
if it is null then it uses the server's executor but you can pass it your
own if you like.

Not sure if you can rely on the newer reserved threads mechanism for this
or not, I don't think so but one of the others can confirm.

Might be another way to do it, this was just the older more traditional
approach that I remember doing. QoSFilter might cover this case as well
but would require some more knowledge of your app then I have to say
definitively.

cheers,
Jesse

--
jesse mcconnell
Post by Benjamin Jaton
But isn't the thread pooling configured at the level of the server?
Server server = new Server(8086);
QueuedThreadPool qtp = (QueuedThreadPool) server.getThreadPool();
qtp.setMaxThreads(6);
On Thu, May 24, 2018 at 11:04 AM, Jesse McConnell <
Post by Jesse McConnell
I know some folks set up a separate connector on a different port for
health checks like this with its own thread pool.
Jesse
--
jesse mcconnell
Post by Benjamin Jaton
Greetings,
https://stackoverflow.com/questions/50455251/jetty-priority-treatment-of-health-checks
---
My Jetty is servicing requests on /myservice/*
My problem is that when the server's queue gets full, the health check
requests on /healthcheck start failing.
Is it possible to have a separate queue for my health checks, or is
there another way to do this?
(code sample)
----
I'm trying my chance in here, maybe someone has tried to do this before
and has thoughts about it?
Thanks
Benjamin
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Joakim Erdfelt
2018-05-24 21:46:59 UTC
Permalink
There's also the DoSFilter and QoSFilter that could be used to give the
healthcheck a higher priority and other requests upper limits of resource
usage.
Post by Jesse McConnell
Sorry, called Executors now in this context, if you check out the
constructors for the ServerConnector you should see some javadoc about how
if it is null then it uses the server's executor but you can pass it your
own if you like.
Not sure if you can rely on the newer reserved threads mechanism for this
or not, I don't think so but one of the others can confirm.
Might be another way to do it, this was just the older more traditional
approach that I remember doing. QoSFilter might cover this case as well
but would require some more knowledge of your app then I have to say
definitively.
cheers,
Jesse
--
jesse mcconnell
Post by Benjamin Jaton
But isn't the thread pooling configured at the level of the server?
Server server = new Server(8086);
QueuedThreadPool qtp = (QueuedThreadPool) server.getThreadPool();
qtp.setMaxThreads(6);
On Thu, May 24, 2018 at 11:04 AM, Jesse McConnell <
Post by Jesse McConnell
I know some folks set up a separate connector on a different port for
health checks like this with its own thread pool.
Jesse
--
jesse mcconnell
On Thu, May 24, 2018 at 12:23 PM Benjamin Jaton <
Post by Benjamin Jaton
Greetings,
https://stackoverflow.com/questions/50455251/jetty-
priority-treatment-of-health-checks
---
My Jetty is servicing requests on /myservice/*
My problem is that when the server's queue gets full, the health check
requests on /healthcheck start failing.
Is it possible to have a separate queue for my health checks, or is
there another way to do this?
(code sample)
----
I'm trying my chance in here, maybe someone has tried to do this before
and has thoughts about it?
Thanks
Benjamin
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Benjamin Jaton
2018-05-24 22:49:16 UTC
Permalink
Thanks Jesse, I created 2 separate servers but your approach is simpler /
cleaner.

On the QoSFilter solution I wonder, in theory isn't possible that the
acceptor queue gets full and that the health check requests get rejected
before reaching the filter?
Post by Joakim Erdfelt
There's also the DoSFilter and QoSFilter that could be used to give the
healthcheck a higher priority and other requests upper limits of resource
usage.
On Thu, May 24, 2018 at 3:51 PM, Jesse McConnell <
Post by Jesse McConnell
Sorry, called Executors now in this context, if you check out the
constructors for the ServerConnector you should see some javadoc about how
if it is null then it uses the server's executor but you can pass it your
own if you like.
Not sure if you can rely on the newer reserved threads mechanism for this
or not, I don't think so but one of the others can confirm.
Might be another way to do it, this was just the older more traditional
approach that I remember doing. QoSFilter might cover this case as well
but would require some more knowledge of your app then I have to say
definitively.
cheers,
Jesse
--
jesse mcconnell
Post by Benjamin Jaton
But isn't the thread pooling configured at the level of the server?
Server server = new Server(8086);
QueuedThreadPool qtp = (QueuedThreadPool) server.getThreadPool();
qtp.setMaxThreads(6);
On Thu, May 24, 2018 at 11:04 AM, Jesse McConnell <
Post by Jesse McConnell
I know some folks set up a separate connector on a different port for
health checks like this with its own thread pool.
Jesse
--
jesse mcconnell
On Thu, May 24, 2018 at 12:23 PM Benjamin Jaton <
Post by Benjamin Jaton
Greetings,
https://stackoverflow.com/questions/50455251/jetty-priority-
treatment-of-health-checks
---
My Jetty is servicing requests on /myservice/*
My problem is that when the server's queue gets full, the health check
requests on /healthcheck start failing.
Is it possible to have a separate queue for my health checks, or is
there another way to do this?
(code sample)
----
I'm trying my chance in here, maybe someone has tried to do this
before and has thoughts about it?
Thanks
Benjamin
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Simone Bordet
2018-05-25 08:02:42 UTC
Permalink
Hi,

On Fri, May 25, 2018 at 12:49 AM, Benjamin Jaton
Post by Benjamin Jaton
Thanks Jesse, I created 2 separate servers but your approach is simpler /
cleaner.
The advantage of using a dedicated connector with its own thread pool
(aka executor) is that you can set the thread priority on the
dedicated executor to be higher.
Post by Benjamin Jaton
On the QoSFilter solution I wonder, in theory isn't possible that the
acceptor queue gets full and that the health check requests get rejected
before reaching the filter?
It will be rare but it's possible - the second dedicated connector
will solve this as well.
--
Simone Bordet
----
http://cometd.org
http://webtide.com
Developer advice, training, services and support
from the Jetty & CometD experts.
Benjamin Jaton
2018-05-25 16:01:01 UTC
Permalink
Got it, thank you all!
Post by Simone Bordet
Hi,
On Fri, May 25, 2018 at 12:49 AM, Benjamin Jaton
Post by Benjamin Jaton
Thanks Jesse, I created 2 separate servers but your approach is simpler /
cleaner.
The advantage of using a dedicated connector with its own thread pool
(aka executor) is that you can set the thread priority on the
dedicated executor to be higher.
Post by Benjamin Jaton
On the QoSFilter solution I wonder, in theory isn't possible that the
acceptor queue gets full and that the health check requests get rejected
before reaching the filter?
It will be rare but it's possible - the second dedicated connector
will solve this as well.
--
Simone Bordet
----
http://cometd.org
http://webtide.com
Developer advice, training, services and support
from the Jetty & CometD experts.
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Loading...