Metrics
Key metrics for monitoring Tomcat
ThreadPool
Tomcat thread pool policy
The Executor (thread pool)
JDK 原生的线程池实现在当前线程池线程数量大于等于 corePoolSize 时会在线程池队列满后才创建新的线程,更加适合于 CPU 密集型的任务,而 Tomcat 会在大于等于 corePoolSize 且小于 maximumPoolSize 时先创建线程,达到 maximumPoolSize 后再放入队列,更适合 IO 密集型任务。
类似的实现在 Dubbo 源码中也可以看到:
ClassLoader
The Loader Component
Class Loader How-To
可以看出,Web 应用程序类加载器与默认的 Java 委托模型不同,从 Web 应用程序的角度来看,类或资源的加载按以下顺序进行:
- Bootstrap classes of your JVM
- /WEB-INF/classes of your web application
- /WEB-INF/lib/*.jar of your web application
- System class loader classes
- Common class loader classes
ParallelWebappClassLoader
WebappClassLoaderBase
类似的实现可以在 Flink 中看到,如:Inverted Class Loading and ClassLoader Resolution Order
SPI
DriverManager,_the_service_provider_mechanism_and_memory_leaks