我正在测试一个应用程序(后端,它暴露了很少的API)。满足TPS,满足响应时间。但是,当我增加线程(在Jmeter中)时,测试失败,开始给出错误。 (我正在将Threads作为并发用户阅读)所以,我们现在已经说过我的应用程序是瓶颈。要求是前端应用程序的1000个并发用户。前端应用程序中1个事务的用户旅程大约需要2到3分钟。但是,我测试的应用程序是无状态应用程序(后端),它以毫秒为单位响应,并且所需的TPS本身就满足50个线程。但我被要求用1000个线程测试我的应用程序以及前端应用程序有这个要求。 他们说得对吗?前端应用程序的1000个并发用户的需求也可以应用于后端应用程序。
答案 0 :(得分:0)
前端是后端的Web表示,不是吗?所以没有后端,前端就无法工作。
通常,提供业务non-functional requirements的产品所有者不关心底层实现(前端,后端,数据库,负载平衡器等),因此1000个并发用户的要求适用于<强>整个集成系统。
现在您的目标是确定瓶颈,通常过程如下:
答案 1 :(得分:0)
如果你有一个没有NIO的琐碎tomcat,前端知道你不支持足够的并发用户的唯一方法是serversocket TCP syn队列太短。 (客户端获得TCP RST)
jetty和tomcat都设置为使服务器队列队列更长。这是以某种方式阻止任何人检测并发请求限制的最简单方法。
例如,您只能“提供”30个线程和连接,但在serversocket接受队列中仍有1000个TCP SYN待处理。这意味着连接排队,因此被接受,并且就客户端可以判断而言,并发。他们恰好有更长的E2E时间,因为在服务之前这个队列有所延迟。
无论后端是什么,在某些时候这些1000个请求都不会并发:也许它们在cassandra连接中汇集到4个线程中,或者在穷人bean验证缓存前面的一些大锁中漏斗,等...
通过排队,您可以保持对可靠性的控制以保持性能的甜点,并且任何多余的请求会逐渐转换为更多的E2E时间来遍历队列并获得服务。
所以,是的,他们可以要求你能够接受1000个请求,但他们无法知道时间是如何分解的。