不知道你这里的最大最优定义是什么?先定个准确定义?
比如响应速度 95% 在 3s 内,且没有引发 fail,系统可在此压力下持续运行 15 分钟且保持稳定的性能表现时,对应的用户数/线程数?
如果单看 TPS 和响应速度指标,个人理解是:
持续增加线程数(压力),TPS 先是变大(程序在长期待命线程基础上增加临时帮忙的线程,所以会加大),然后稳定(达到了 jvm 线程数配置最大值/系统能抗住的最大值,不给加了/没法加了)。
响应时间先是稳定(因为每个线程压力没怎么变,只是线程总数增加获得性能提升),然后变大(线程数加不了了,但活还在增加。来不及立即处理的只能有些排队等待下,所以响应时间长了)。
TPS 稳定且响应时间还没上升到不可接受程度(这个要看具体业务需要)时,可以承受的最大线程数应该就是这个系统的接口在这个配置下最大能承受的并发量了。至于反推用户数,要结合业务场景推算,毕竟 100 个用户在线可能分别在干完全不同的事情,只有极少数场景(比如秒杀)是都在干同一个事情,调用同一个接口。
PS:响应时间不要去看折线图,看不出啥的,因为响应时间是会在一个比较大的范围内波动的,几秒内有可能有的响应速度 3s(可能进了队列等待),也可能 1s(刚好没进入队列直接开始处理),折线图看起来就是一堆线混在一起。要看总体统计数据,95% 响应时间多少,50% 响应时间多少。
PPS:楼主从头到尾都没提及业务场景,所以我也只能顺着下去了纯技术了。实际还得根据业务场景来,比如是否会有固定串行事务、实际上高压力时各接口调用量占比如何等,对应调整压测策略和要观察的数据。