1

通常在tomcat中,一个线程会运行,当一个请求进来时,它会将服务请求的责任分配给线程池中的一个线程。

就可伸缩性而言,主线程是阻塞还是非阻塞有关系吗?

4

2 回答 2

2

非阻塞 IO 具有以下优点:

  • 高度可扩展:因为不再需要每个客户端一个线程。它可以有效地支持更多的客户端。
  • High Keep Alive:阻塞IO需要阻塞直到下一个请求的keepalive时间。非阻塞是通知模型,它可以支持高保活时间。
  • 高负载时更好的性能:因为在阻塞 IO 中,每个连接有一个线程,所以 n 个连接需要 n 个线程。随着值 n 的增加,性能下降,因为更多的线程上下文切换。
于 2012-06-11T15:47:30.213 回答
1

当在 tomcat 中处理传入请求时,它会将连接分配给其线程池中的线程。

这里重要的是尽可能快地运行线程。您通常在此线程中运行阻塞 io 调用,用于文件 io、db 等。

您需要适当调整此线程池的大小以处理您的预期流量。

本质上,当使用 Java EE servlet 规范时,您被迫以每个传入连接方式在一个线程中处理您的请求。

有一些非阻塞框架。查看http://www.playframework.org/和 Jetty(默认情况下 Jetty 非阻塞?

于 2012-06-11T15:35:01.893 回答