我正在调整Tomcat 7的性能,服务器配备24核和32 GB内存,我的测试界面是RESTful服务,没有任何进程(立即响应),server.xml的配置如下。
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
enableLookups="false"
compression="off"
maxConnections="8192"
maxThreads="1000"
tcpNoDelay="true"/>
和JVM配置......
-Xms8192M -Xmx16384M.
JMeter的主机是另一台与上述服务器具有相同规格的计算机。
JMeter堆的配置是-Xms12218m -Xmx24426m
。
我的JMeter测试计划是240个请求同时发送到RESTful接口一次,但我注意到,前100个响应时间的平均值不超过50毫秒,但在接下来的100个中增加到1秒其余时间为3秒。
我对这种现象感到好奇,配置中是否有任何错误或有任何建议?
提前致谢。
答案 0 :(得分:7)
你可以配置:
acceptCount="2048"
和
maxConnections="1024"
maxConnections与maxThreads有关系,您应该配置maxThreads匹配您的业务和CPU的核心编号,例如8X或16X。 acceptCount是等待的连接号。
请注意,maxConnections和maxThreads越大越好,服务器硬件的性能也越高。
答案 1 :(得分:0)
服务器必须提供的服务越多,服务每个请求所需的时间就越长。这是正常行为。
你是如何同时启动线程的?斜坡时间= 0或1?
当您开始触发大量线程时,您的客户端需要更长时间才能发出请求,而您的服务器需要更长时间才能响应。
在启动时,服务器能够快速响应所有请求,因为它没有其他任何操作,直到达到阈值。这些请求中的每一个都将快速完成,同一个线程将发送另一个请求。同时,服务器正在响应前一波线程,而更多的线程正在排队。现在它必须在仍然响应请求的同时管理队列,因此满足另一个阈值。
基本上,启动一堆线程并同时触发请求对于服务器来说并不是一个非常现实的用例,除非在少数情况下。如果相关,您可以期待这种行为。