﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-读万卷书不如行千里路，经验的积累又不是一蹴而就的，不但需要知识的沉积，还需要长久经验的总结升华-文章分类-J2EE应用相关工具</title><link>http://www.blogjava.net/liujw/category/9478.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 03:24:17 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 03:24:17 GMT</pubDate><ttl>60</ttl><item><title>使用JMeter进行压力测试</title><link>http://www.blogjava.net/liujw/articles/39139.html</link><dc:creator>刘军伟</dc:creator><author>刘军伟</author><pubDate>Tue, 04 Apr 2006 05:33:00 GMT</pubDate><guid>http://www.blogjava.net/liujw/articles/39139.html</guid><wfw:comment>http://www.blogjava.net/liujw/comments/39139.html</wfw:comment><comments>http://www.blogjava.net/liujw/articles/39139.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liujw/comments/commentRss/39139.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liujw/services/trackbacks/39139.html</trackback:ping><description><![CDATA[JMeter是apache的jakarta上面的项目，用于软件的压力测试（Load Test），不但可以对HTTP，也可以对数据库（通过JDBC）、FTP、Web Service、Java 对象等等进行压力测试。<br /><br />项目地址：<a href="http://jakarta.apache.org/jmeter">http://jakarta.apache.org/jmeter</a><br /><br />使用： 运行bin目录下的jmeterw.bat，运行jmeter.bat也可以，不过就会有一个命令窗口显示。<br /><br />要提醒一下的是jmeter根据当前系统的locale显示菜单的语言，为了方便想设置回英文的话，可以修改jmeter.properties文件，设置language=en （我下载的2.1.1版本把“退出”误译为“推出”，怎么看都不顺眼 ）<br /><br />使用：<br /><br />JMeter的测试计划（Test Plan）呈树状结构，树里面有多种元素类型，树状结构的元素之间有的是有继承关系的（其原理有点类似log4j）。下面简述一下元素类型：<br /><br />1、ThreadGroup<br />顾名思义就是线程组，测试必须有一个ThreadGroup元素作为基础（否则就没有测试线程在跑了），这个元素可以配置跑多少个线程、每个线程循环多少次，所有线程数的总启动时间（Ramp-up period）等等。<br /><br />2、Controller<br />包括Logical Controller和Sampler，前者用来作一些逻辑上的控制，例如轮换、条件、循环等等。Sampler就是真正“干活”的“取样器”，例如“HTTP Request”，就是拿来执行一个HTTP请求的。<br /><br />3、Listener<br />Listener对请求过程进行监听，可以简单理解为获取结果的东东。例如Simple Data Writer，可以把结果写到一个文本文件里（其实所有Listener都可以写数据到文件里），还有View Results in Table，就是把结果显示在表格里。<br /><br />4、 Timer<br />用来控制执行流程中的时间延迟等功能。<br /><br />5、 Assertion<br />断言，加到Sampler里面可以对返回的结果进行判断，例如判断HTTP返回结果里面是否含有某个字符串。如果断言为真，JMeter会标记请求为成功，否则标记为失败。<br /><br />6、 Configuration Element<br />配置用的元素，很有用。由于测试计划是树状和有继承关系的，可以在高层次指定一个Configuration Element，低层次的相关Sampler如果没有显式地指定配置，就继承高层次的配置信息。（跟log4j很像吧？）<br /><br />7、 Pre-Processor/Post-Processor Elements <br />用来在Sampler运行前和运行后作一些预处理和后处理工作的。例如动态修改请求的参数（预处理），从返回信息里面提取信息（后处理）等等。<br /><br />举例：要做一个最简单的HTTP压力测试： 用10个线程访问一个URL，每个线程访问100次。<br />做法：<br />1、 在Test Plan下面加一个Thread Group，配置里面，线程数填10，循环次数填100<br />2、 在Thread Group下面加一个HTTP Request，这是一个Sampler，在它的配置里面填写主机信息，端口、协议、路径、参数等信息<br />3、 在HTTP Request下面加一个View Results in Table，如果你想把记录记到文件，则填写文件路径。<br />4、 保存一些这个Test Plan，就可以选择Run菜单下面的Run来运行了。直到Run菜单项从灰色变回黑色，就表示运行完了。在View Results in Table下面，你可以看到运行结果。<br /><br />关于元素的详细描述可以参考官方文档。<img src ="http://www.blogjava.net/liujw/aggbug/39139.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liujw/" target="_blank">刘军伟</a> 2006-04-04 13:33 <a href="http://www.blogjava.net/liujw/articles/39139.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>