-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/40668/
-----------------------------------------------------------

Review request for Ambari, Alejandro Fernandez, Nate Cole, and Sid Wagle.


Bugs: AMBARI-14050
    https://issues.apache.org/jira/browse/AMBARI-14050


Repository: ambari


Description
-------

Ambari's default Jetty thread pool is configured at 25 threads. When deployed 
on a machine that has 48 "processors", Jetty's calculation for determining how 
many "Acceptor" and "Selector" threads to create never takes into account the 
core pool size. As a result, we get:

- 12 "Acceptor" threads (these answer binds to port 8080)
- 12 "Selector" threads (these pick available threads to answer bindings)
- 1 free thread (these are the threads available to do stuff with)

Notice that there's only 1 free thread. This means that Jetty effectively makes 
Ambari a single-threaded web application on larger systems!

The "fix" is to increase the thread count in the {{ambari.properties}}, however 
nobody knows to do this since no warning is produced.

I suggest:

- Log a warning on server startup if we detect that the core pool size is less 
than 3/4 of the available processors on the system.

- Automatically increase the core pool size to the min(100, double existing 
size) when the above is detected


Diffs
-----

  
ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
 56034d9 
  
ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
 621010a 

Diff: https://reviews.apache.org/r/40668/diff/


Testing
-------

mvn clean test

(thread dumps with simulated Runtime.getRuntime() calls)


Thanks,

Jonathan Hurley

Reply via email to