CPU和内存配置决定了应用承载计算、并发状态与缓存的能力,但规格选择不能只由用户总量推导。应从请求路径、并发形态、资源曲线和服务目标出发,找出首先达到瓶颈的环节。对于网页应用,数据库、磁盘和网络也可能先于CPU饱和。
CPU负责执行指令、加解密、压缩、模板渲染、序列化以及线程调度。可运行线程多于可用处理能力时,会形成运行队列,任务等待时间增加。内存则用于进程堆、运行时元数据、连接状态、缓存及文件页缓存。内存不足时,系统可能回收缓存、使用交换空间,严重时触发OOM终止进程。
评估时要覆盖同机的应用、代理、监控组件和定时任务。JVM服务需关注堆之外的直接内存和线程栈;缓存服务需结合数据集大小与淘汰策略;高连接数服务需估计每条连接的状态开销。标称内存并不等于可全部分配给业务进程的内存。
选择包含正常时段、业务峰值和批处理时段的观测窗口,记录请求量、并发数、P95/P99延迟、错误率,以及CPU、可用内存、交换活动和运行队列。Linux上可用vmstat 1观察运行队列、空闲内存和交换进出;应用侧同时记录线程池队列长度、连接池等待与GC暂停。
单个瞬时采样无法说明趋势;平均利用率也可能掩盖持续数分钟的拥塞。应对齐时间戳,把用户体验指标与主机指标放在同一时间线上。
准备接近生产的数据量和请求组合,从低并发逐档提高负载,每档持续到缓存预热、队列稳定,并覆盖慢请求路径。记录吞吐、P95/P99、错误率和资源曲线。压测中应避免只发送单一轻请求,否则无法代表上传、查询、渲染或后台任务的资源差异。
若CPU利用率很高但吞吐没有增加,优化算法、锁和线程池可能比加核更有效;若内存使用稳定但缓存命中率低,单纯增加内存也未必改善延迟。
常见误判包括根据平均CPU配置、把缓存占用直接视为内存泄漏、忽略系统和代理进程,以及把外部依赖的等待归因于本机CPU。复测时还要确认监控采样间隔足以捕捉短时峰值,重启后的冷缓存状态也有代表性。当延迟达标且资源余量可解释,压测结果能重复,配置才算有依据。 🛡️