使用http_load来给Linux系统的服务器做压力测试
介绍个http_load压力测试工具,http_load,类似的工具还有webbench、ab、Siege。
1、下载
官方网站:http://acmecom/software/http_load/
复制代码
代码如下:
cd /root
wget http://acmecom/software/http_load/http_load-12mar2006targz
tar xzf http_load-12mar2006targz
2、安装
复制代码
代码如下:
cd http_load-12mar2006
make
执行完make,会在当前目录生成一个http_load二进制文件。
3、使用方法
复制代码
代码如下:
root@www:~/http_load-12mar2006# /http_load --help
usage: /http_load [-checksum] [-throttle] [-proxy host:port] [-verbose] [-timeout secs] [-sip sip_file]
-parallel N | -rate N [-jitter]
-fetches N | -seconds N
url_file
One start specifier, either -parallel or -rate, is required
One end specifier, either -fetches or -seconds, is required
主要参数说明:
-parallel 简写-p :含义是并发的用户进程数。
-rate 简写-r :含义是每秒的访问频率
-fetches 简写-f :含义是总计的访问次数
-seconds简写-s :含义是总计的访问时间
选择参数时,-parallel和-rate选其中一个,-fetches和-seconds选其中一个。
示例:
http_load -parallel 50 -s 10 urlstxt
这段命令行是同时使用50个进程,随机访问urlstxt中的网址列表,总共访问10秒。
http_load -rate 50 -f 5000 urlstxt
每秒请求50次,总共请求5000次停止。
4、基本的返回值
(1)49 fetches, 2 max parallel, 289884 bytes, in 100148 seconds
说明在上面的测试中运行了49个请求,最大的并发进程数是2,总计传输的数据是289884bytes,运行的时间是100148秒
(2)5916 mean bytes/connection
说明每一连接平均传输的数据量289884/49=5916
(3)489274 fetches/sec, 289455 bytes/sec
说明每秒的响应请求为489274,每秒传递的数据为289455 bytes/sec
(4)msecs/connect: 288932 mean, 44243 max, 24488 min
说明每连接的平均响应时间是288932 msecs,最大的响应时间44243 msecs,最小的响应时间24488 msecs
(5)msecs/first-response: 635362 mean, 81624 max, 57803 min
(6)HTTP response codes: code 200 -- 49
说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈。
特殊说明:这里,我们一般会关注到的指标是fetches/sec、msecs/connect
他们分别对应的常用性能指标参数Qpt-每秒响应用户数和response time,每连接响应用户时间。测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpu、men进行分析,才能得出结论
5、如果你需要测试https,你必须将 Makefile中
复制代码
代码如下:
# CONFIGURE: If you want to compile in support for https, uncomment these
# definitions You will need to have already built OpenSSL, available at
# http://wwwopensslorg/ Make sure the SSL_TREE definition points to the
# tree with your OpenSSL installation - depending on how you installed it,
# it may be in /usr/local instead of /usr/local/ssl
SSL_TREE = /usr
SSL_DEFS = -DUSE_SSL
SSL_INC = -I$(SSL_TREE)/include
SSL_LIBS = -L$(SSL_TREE)/lib -lssl -lcrypto
由于使用到openssl,你必须安装openssl和相应的开发环境
复制代码
代码如下:
apt-get install openssl
apt-get install libssl-dev
pfind -name sslh
/usr/include/openssl/sslh
所以上面红色字体部分必须修改
本Guide利用Eclipse及Ant建立简单Web Service演示Web Service基本发程:
1系统条件:
Eclipse Java EE IDE for Web Developers
Java SE 6
Windows XP
2基本环境搭建:
1)Java SE6 JDK安装:载Java SE6 JDK双击安装默认选项进行安装即
2)Eclipse安装与配置:
安装直接解压
配置处两点Window>Preferences>Java>Installed JREs确保设置:
安装路径能略同
Window>Preferences>Java>Compiler 确保设置:
3建立Server端工程相关包与类:
创建Java Project命名wsServerHelloWorld:
项目建立包:orggnuhpcwsServer
包边建立类:SayHello
SayHellojava文件输入代码:
package orggnuhpcwsServer;
import javaxjwsWebService;
@WebService
public class SayHello {
private static final String SALUTATION = "Hello";
public String getGreeting(String name) {
return SALUTATION + " " + name;
}
}
其注意@WebService 称作annotation或者metadataJava SE 5Web Services Metadata Specification引入Java SE 6于Web Services规范升级及JAX-WS(Java API for XML Web Services)20规范些升级使我Web Services创建调用变更加容易使用些新功能我仅仅使用简单Annotations注释Java类创建Web Services发者其类前用该annotations指定类告诉runtime engineWeb Service式操作使能该类annotations产布署Web ServiceWSDL映射annotationsJava源代码与代表Web ServiceWSDL元素连接起
4使用Ant产Server端代码:
首先项目新建文件:buildxml使用OpenWith>AntEditor打输入脚本代码:
<arg line="-cp /bin -keep -s /src -d /bin
orggnuhpcwsServerSayHello"/>
default指定默认执行Targetwsgen,wsgen创建能够使用WebService类所用于WebService发布源代码文件经编译二进制类文件WSDL符合规范该类WebService
Target名称wsgen具体执行命令参数:
-cp 类路径
-keep产java文件
-s 产源文件放哪
-d 产输问价放哪
使用Ant Build选项运行:
功执行提示我刷新Project
我Project区域看结:
5布Web Service
orggnuhpcwsServer建立类RunService:
package orggnuhpcwsServer;
import javaxxmlwsEndpoint;
public class RunService {
/
@paramargs
/
public static void main(String[] args) {
Systemoutprintln("SayHello Web Service started");
Endpointpublish("" ,
new SayHello());
}
}
运行Run As>Java Application我结说明web serviceServer端已经启
6查看WSDL:
Window>Show View>Other>General>Internal Web Browser其输入:wsdl
看看底WSDL都记录哪些信息看完停止该Server
7监测Server
我创建完Server用Eclipse Web Services Explorer监测Server
Window>Open Perspective>Other >JavaEE
打Eclipse Web Services Explorer
点击右角WSDL Page按钮:
单击WSDL MainURL输入:wsdl 按Go按钮现视图:
我触发Web Service操作:点击getGreetings添加参数比gnuhpc点击Go按钮:
8创建Client端 工程相关包与类:
创建Java Project命名wsClientHelloWorld项目建立包:orggnuhpcwsClient
9使用Ant产Client代码框架:
编写Web service使用工具利用WSDL进行调用客户端桩;或者使用底层API手编写Web service前者便者灵现我通前者做说明:
新建文件buildxml
New>File>buildxml
<arg line="-keep -s /src -p orggnuhpcwsClient
-d /bin wsdl"/>
注意:wsgen 支持 Java class 创建 Web serviceswsimport 支持 WSDL 创建 Web services别应于 JAX-RPC 式 Java2WSDL WSDL2Java要根据发布WSDL进行创建要先运行RunServer原
运行ServerRunService : Run As>Java Application>
运行该Ant脚本产Client代码:Run As>Ant Build
运行功提示:
代码:
步读取WSDL并客户端桩些桩我代码所用Java类接口些桩给服务器端功能提供客户端接口例我服务器提供Maths服务该服务带叫做add我客户端代码调用桩桩实现该使用参数封装Java调用变Webservice请求请求基于HTTP发送给服务器且使用SOAP作RPC协议监听服务器接收该SOAP消息(十八九)其转换服务器处调用
需要socket(套接字)编程、HTTP协议的知识,实现一个最简单的HTTP服务器,其实就是根据HTTP协议的通信规则来发送socket数据,往往是绑定(用bind调用)一个socket(套接字)然后监听(用listen调用)80端口,具体任何实现可以参考网上的一些简单的代码。之所以说这是最简单的HTTP服务器,是因为HTTP服务器还要处理并发、缓存等功能,更进一步还要支持某种动态脚本比如PHP的模块。
0条评论