我是JMeter的新手。我按照本教程学习了JMeter。
我尝试在以下条件下进行负载测试。
Number of Threads (Users) - 1000
Ramp-Up Period (in seconds) - 10
Loop Count - 5
当我运行测试时,我尝试加载我的网站(清除缓存后)但是,加载页面需要比平时更多的时间。当浏览器缓存了数据时,不会发生此问题。
有人可以告诉我为什么会这样吗?是因为当 1000 个用户加载我的网站时,它可能会崩溃或其他什么?
任何解释都将不胜感激。
在运行 JMeter 测试时,如果您尝试加载您的网站(清除缓存后),加载总是比平时花费更多时间。这是因为您已经清除了缓存,现在浏览器需要再次呈现页面资源以加载所需的页面。加载完成后,如果您尝试在不清除缓存的情况下再次加载页面,则这次加载页面所需的时间将更少。浏览器不会每次都获取页面资源,而是将其保存在缓存中。因此,下次当您尝试打开或加载该页面时,浏览器可以使用这些缓存在最短的时间内为您打开该页面。因此,当浏览器加载页面时,第一次比稍后加载该特定页面(不清除缓存)花费更多时间。
另一点是,由于您的 Jmeter 测试在您尝试加载网站时正在运行,因此加载您的网站需要更长的时间。由于您的应用程序已经在处理 JMeter.So 发送的某些请求,因此处理额外的负载会影响您的网站页面响应时间。
1000 个用户的启动时间缩短 10 秒!!
这不是最佳做法。您必须给足够的时间来预热这 1000 个用户。10 秒太小,无法作为 1000 个用户的启动时间。因此,在JMeter测试期间,很明显您的浏览器将花费意外时间来加载您的网页(使用浏览器)或最终通知"连接超时"。这不一定意味着您的应用程序崩溃了。这仅仅是因为JMeter中不切实际的测试脚本设计。
您能否详细说明您使用的网络服务器软件类型?- Apache HTTPD 2.4/Nginx/Apache Tomcat/IIS
底层操作系统呢?- Windows (服务器?)/Mac OS X/Linux
如果您的Web服务器机器不受CPU,磁盘等最大性能的限制(检查任务管理器),则您的性能可能会受到Apache配置的限制。
您能否检查Apache HTTPD日志文件以获取相关警告?
根据您的配置(httpd.conf + 任何文件"从那里包含"d),您可能正在使用mpm_winnt工作线程,该工作线程具有可配置的工作线程数,默认情况下为 64 个,根据:
https://httpd.apache.org/docs/2.4/mod/mpm_common.html#threadsperchild
一旦这些都繁忙,来自任何客户端(您的浏览器、负载测试等)的新请求将不得不等待轮到它们。
尝试看看如果增加线程数会发生什么!