在生产上部署项目的时候,很多时候遇到这种情况,线程开的很多,
但是处理效率却不是很快,一些引擎服务,作为服务端需要处理的并发服务量很多,
这时候我们开的线程数往往就远大于我们的并发数,最初目标可能就是为了处理大的并发量,
但是这样有时候造成的每笔交易量的处理时间很慢,百思不得其解是为什么,也找不到什么好的答案,
最后我总结并和同时讨论之后觉得的原因可能是,cup线程切换时消耗时间随则线程数的增大而越来越大,CPU把更多的时间花在的线程服务的切换上了,CPU处理正常逻辑需要等待的时间就越久,从效率上讲降低了处理业务的速度。
之前一直觉得多线程就是高效率(当然在一定的线程量内确实可以高效率),但是多线程本身并不能提高cpu效率,多线程是在资源足够的情况下利用空闲的资源做需要等待业务的并发处理。这种高效率的情况适用于当前业务处理的消耗的服务器资源并不充分的情况下,如果当服务器的资源(cpu、运行内存。。)都已经达到上限的情况下,在多开线程也因该无法提高其运行效率了。