并行处理量:比起CPU和内存,到底谁更重要?
很多人选服务器时盯着"能扛多少并发",但并行处理量从来不是CPU或内存单独决定的,它是两者共同作用的结果。非要分主次,答案可能和你想的不一样。
先看CPU。并行处理量的第一直觉确实来自核心数。8核16线程天然比4核8线程能同时跑更多任务,这没错。但CPU决定的是"能同时开多少个线程",不是"每个线程能跑多快"。当业务是短连接、轻计算,比如API网关、Nginx反向代理,CPU核心数几乎就是并行量的天花板,这时候CPU确实是第一优先级。
但问题出在业务变重的时候。一旦每个并行任务开始吃内存,比如Java应用、数据库查询、数据分析,瓶颈立刻从CPU转向内存。原因很简单:100个并发任务,每个需要2GB内存,总共就要200GB。内存只有64GB,系统只能靠Swap硬撑,IO等待飙升,CPU再多核心也在空转。这时候你堆CPU,并行量反而下降。
所以真实规律是:轻并发看CPU,重并发看内存,大多数业务卡在内存上。
一个验证方法:压测时观察CPU和内存的占用曲线。如果CPU没跑满但响应变慢、GC频繁,说明内存才是瓶颈。如果CPU持续100%而内存还有余量,才轮到加核心。
并行处理量的本质不是"谁更重要",而是先找到瓶颈在哪。选型时与其问"CPU和内存哪个优先",不如先问一句:我的业务每个并发任务到底吃什么?答案不同,优先级完全不同。
