我试图了解运行Java应用程序的t2.large、t2.xlarge或t2.2xlarge示例的预期性能。假设我有一个运行在t2.large示例上的应用程序,它每秒接收x个请求,那么可以或将要创建多少个线程来尽可能快地满足这些请求?AWS指出,t2.large有2个vCPU,而vCPU是英特尔至强处理器上的单个线程。如果是这样,那么单个至强线程可以处理多少个JVM线程?
x
vq8itlhq1#
对于单个内核的JVM线程数没有硬性限制(或虚拟内核)可以执行。多个线程可以在同一个内核上依次执行。这甚至不一定会降低应用程序的速度。例如,如果当前线程正在等待IO操作返回,例如等待数据库查询或HTTP调用的响应,该线程可以被挂起,因为无论如何都不可能在该线程中执行任何东西,并且另一个线程可以接管CPU上的时间。根据应用程序中要执行的工作类型以及并行请求的吞吐量,在给定数量的2个vCPU上运行多少线程是合理的。了解这些限制的最佳方法是测量不同工作负载的吞吐量和响应时间。
1条答案
按热度按时间vq8itlhq1#
对于单个内核的JVM线程数没有硬性限制(或虚拟内核)可以执行。多个线程可以在同一个内核上依次执行。这甚至不一定会降低应用程序的速度。例如,如果当前线程正在等待IO操作返回,例如等待数据库查询或HTTP调用的响应,该线程可以被挂起,因为无论如何都不可能在该线程中执行任何东西,并且另一个线程可以接管CPU上的时间。
根据应用程序中要执行的工作类型以及并行请求的吞吐量,在给定数量的2个vCPU上运行多少线程是合理的。
了解这些限制的最佳方法是测量不同工作负载的吞吐量和响应时间。