Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jetty-users] Customizing jetty worker threadpool


I am currently working on an application which comprises of multiple servers. Each server is deployed using a dedicated Jetty instance. Each server accepts HTTP requests from external clients as well as other servers in the system. i.e. the servers form the peer-to-peer system using HTTP protocol.

I am currently working on a feature to separate out internal vs external requests such that a % of worker threads are reserved for internal requests and remaining threads for external ones.

I could think of couple of approaches to solve this problem. Can you please take a look and provide feedback?

(1) Using Servlet 3 specification

The idea would be to define two separate thread-pools internally and submit the asynchronous request based on request type. My understanding here is that it would require an additional thread switch as compared to synchronous request processing (jetty_acceptor -> jetty_selector -> jetty_worker -> app_thread).  Is this accurate? If yes is there a way to avoid this?

(2) Somehow customizing the Jetty implementation such that we reserve a % of jetty worker threads for internal requests and other for external requests. The flow would look like this,
  jetty_acceptor -> jetty_selector (Demux) ----> jetty_worker_pool_for_internal
                                                                   -----> jetty_worker_pool_for_external

The demux here would look at the HTTP request to figure out its type and submit it to appropriate thread-pool. Is this possible? If yes, any pointers?

Any other approach I may have missed?

Thanks in advance,


Back to the top