Dro*_*gba 4 java spring multithreading tomcat
我正在使用托管在Tomcat 7上的Spring 3开发一个Java Web应用程序,它需要处理超过2.5k的请求/秒.我有一个RequestProcesseor类,每个HTTP使用此方法请求哪个进程:
@Service
public class RequestProcesseor {
public void processSomething(int value1, int value2) {
// process something...
// create and deep copy some object
// some BigDecimal calculations
// maybe some webservice calls
}
}
Run Code Online (Sandbox Code Playgroud)
同时有超过2.5k的请求,并将调用processSomething方法.如果我让这个课程多线程.它会改善性能吗?如果是,为什么?我该如何证明呢?
服务器有一个4核CPU.
即使您没有显式执行任何多线程,您的应用程序服务器也会隐式地将每个请求分派给它自己的线程,因此您已经在CPU上进行了并发加载.
如果您的请求处理受CPU限制,并发代码将仅对您有所帮助,这种情况很少发生.通常,瓶颈是数据库,或者更一般地说,是与其他后端子系统的接口.
如果通过处理大量内存数据来处理每个请求,并且如果每秒请求负载较低,则可以在几个线程之间小心划分工作,而不是超过实际的CPU核心数.
因此,由于您的服务器负载很重,因此通过将工作分派给多个线程几乎肯定无法提高其性能.请注意,通过多线程破坏性能非常容易.
请注意,Tomcat已经在进行多线程处理.
在应用程序服务器或Web容器内自行执行多线程并不总是明智的.
应用程序服务器或Web容器已在请求上执行多线程处理.
请阅读Tomcat的文档和/或源代码.
| 归档时间: |
|
| 查看次数: |
1718 次 |
| 最近记录: |