命令格式ab [options] 网站网址
html
参数说明-n、-c、-t、-v
web
示例apache
/usr/local/httpd/bin/ab -n5000 -c900 www.bt.com/index.html
在测试时要根据状况调整求总数与并发用户数安全
参数 | 描述 |
---|---|
Server Software |
http 响应数据的头信息 |
Server Hostname |
请求的url 中的主机名称 |
Server Port |
web 服务器软件的监听端口 |
Document Path |
请求的url 根的绝对路径 |
Document Length |
http 响应数据的正文长度 |
Concurrency Level |
并发的用户数 |
Time taken for tests |
全部这些请求被处理完成所花费的时间总和 |
Complete requests |
表示总请求数 |
Failed requests |
失败的请求总数 |
Total transferred |
请求的响应数据长度总和 |
Requests per second |
服务器的吞吐率,每秒处理的请求数 |
Time per request |
用户平均请求等待时间 |
Time per request |
每一个请求实际运行时间的平均值 |
Percentage of the requests served within a certain time (ms) |
描述每 个请求处理时间的分布状况 |
[root@localhost bin]# ab -n 20000 -c 500 www.kgc.com/index.html //使用命令测试 This is ApacheBench, Version 2.3 <$Revision: 1807734 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.kgc.com (be patient) Completed 2000 requests Completed 4000 requests Completed 6000 requests Completed 8000 requests Completed 10000 requests Completed 12000 requests Completed 14000 requests Completed 16000 requests Completed 18000 requests Completed 20000 requests Finished 20000 requests Server Software: Apache Server Hostname: www.kgc.com Server Port: 80 Document Path: /index.html Document Length: 68 bytes Concurrency Level: 500 Time taken for tests: 1.237 seconds Complete requests: 20000 Failed requests: 0 Total transferred: 7300000 bytes HTML transferred: 1360000 bytes Requests per second: 16169.67 [#/sec] (mean) Time per request: 30.922 [ms] (mean) Time per request: 0.062 [ms] (mean, across all concurrent requests) Transfer rate: 5763.60 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 5 60.3 1 1004 Processing: 0 14 49.6 6 808 Waiting: 0 12 49.5 5 808 Total: 1 19 78.2 8 1201 Percentage of the requests served within a certain time (ms) 50% 8 66% 9 75% 9 80% 10 90% 13 95% 17 98% 211 99% 406 100% 1201 (longest request)
Apache
工做模式Apache
工做模式介绍Apache
做为现今web服务器用的最普遍也是最稳定的开源服务器软件httpd-mpm.conf
文件,该文件位于extra/conf
目录中event
模式、worker
模式prefork
模式[root@apache1 bin]# ./httpd -l //查看apache当前工做模式 Compiled in modules: core.c mod SO.c http_ core.c event.c
event
做模式介绍event
是Apache
最新的工做模式,它和worker
模式很像,不一样的是在于它解决了keep-alive
长链接的时候占用线程资源被浪费的问题event
工做模式在遇到某些不兼容的模块时,会失效,将会回退到worker
模式event
工做模式须要Linux
系统(Linux 2.6+)
对epoll
的支持,才能启用。须要补充的是HTTPS
的链接(SSL
)event
工做方式event
工做模式中,会有一些专门的线程用来管理这些keep-alive
类型的线程event
参数讲解在httpd-mpm.conf
配置文件中, 如下是prefork
模块的定义服务器
< IfModule mpm_event_module> StartServers 3 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 0 </lfModule>
参数说明网络
参数 |
说明 |
---|---|
StartServers |
服务启动时初始的进程数,默认3 |
MinSpare Threads |
最小的空闲子进程数,默认75 |
MaxSpare Threads |
最大的空闲子进程数,默认250 |
ThreadsPerChild |
每一个子进程产生的线程数量,默认是25 |
MaxRequestWorkers |
限定同一时间内客户端最大接入的请求数量,默认是400 |
MaxConnectionsPerChild |
每一个子进程在其生命周期内容许最大的请求数量,若是请求总数已经达到这个数值,子进程将会结束,若是设置为0,子进程将永远不会结束。将该值设置为非0值,能够防止运行PHP致使的内存泄露 |
event
优化建议<IfModule mpm_event_module> ServerLimit 1000 StartServers 20 MinSpareThreads 25 MaxSpareThreads 1200 ThreadsPerChild 50 MaxRequestWorkers 2000 MaxConnectionsPerChild 1000 </IfModule>
prefork
做模式介绍prefork
是一个多路处理模块(MPM
),实现了一个进程型的、预派生的web
服务器,适合于没有线程安全库、须要避免线程兼容性问题的系统MaxClients
设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以免所需的内存超出物理内存的大小prefork
工做模式方式spare
)或是空闲的子进程用3 F响应新的请求,可加快响应速度root
身份运行,以便绑定80
端口,子进程一般以一个低特权的用户运行,可经过配置项的User
和Group
配置prefork
模式,可用httpd -l
查看prefork
参数讲解在httpd-mpm.conf
配置文件中,如下是prefork
模块的定义多线程
< IfModule mpm_prefork_module> StartServers 20 MinSpareServers 10 MaxSpareServers 50 MaxClients 150 MaxRequestsPerChild 0 </lfModule>
参数 | 说明 |
---|---|
ServerLimit |
最大进程数 |
StartServers |
启动的时候建立的进程数量 |
MinSpareServers |
最少空闲进程 |
MaxSpareServers |
最多空闲进程 |
MaxClients |
最多建立多少个子进程用来处理请求 |
MaxRequestsPerChild |
每一个进程处理的最大请求数,达到请求数,进程即被销毁,若是设置为0,子进程永远不会结束 |
prefork
优化建议<IfModule mpm_prefork_module> ServerLimit 1000 StartServers 10 MinSpareServers 10 MaxSpareServers 30 MaxClients 1000 MaxRequestsPerChild 5000 </IfModule>
worker
工做模式介绍worker
也是多路处理模块(MPM
),使网络服务器支持混合的多线程多进程ThreadsPerChild
指令和控制容许创建的总线程数的MaxClients
指令ThreadsPerChild
数量的服务线程和一个监听线程,监听线程监听接入请求并将其传递给服务线程处理和应答Apache
老是会维持一个备用(spare
)或是空闲的服务线程池,客户端无须等待新线程或新进程的创建便可获得服务root
身份启动,以绑定80
端口;随后,Apache
以较低权限的用户创建子进程和线程User
和Group
指令用于配置Apache
子进程的运行用户。子进程要对网页内容拥有读权限,但应该尽量限制权限worker
参数讲解参数 | 说明 |
---|---|
ServerLimit |
最大进程数,默认值是"16" |
ThreadLimit |
每一个子进程的最大线程数,默认值是“64” |
StartServers |
服务器启动时创建的子进程数,默认值是"3" |
MaxClients |
容许同时接受的最大接入请求数量(最大线程数量) |
MinSpareThreads |
最小空闲线程数默认值是"75" |
MaxSpareThreads |
设置最大空闲线程数。默认值是"250" |
ThreadsPerChild |
每一个子进程创建的常驻的执行线程数。默认值是25 |
MaxRequestsPerChild |
设置每一个子进程在其生存期内容许伺服的最大请求数量。设置为"0" ,子进程将永远不会结束 |
<IfModule mpm_worker_module> ServerLimit 40 ThreadLimit 200 StartServers 20 MaxClients 1000 MinSpareThreads 25 MaxSpareThreads 100 ThreadsPerChild 200 MaxRequestsPerChild 1000 </IfModule>
<Directory目录路径>
和</Directory>
这对语句为主目录或虚拟目录设置权限参数 | 做用 |
---|---|
Options |
设置在特定目录使用哪些特性 |
AllowOverride |
容许存在于.htaccess 文件中的指令类型 |
Require |
设置目录的访问控制 |
Indexes |
当用户访问该目录时,但没有指定要访问哪一个文件,并且目录下不存在默认网页时,返回目录中的文件和子目录列表 |
MultiViews |
内容协商的多重视图,Apache 的一 个智能特性。当访问目录中不存在的对象时 |
ExecCGI |
容许在该目录下执行CGI 脚本 |
FollowSymLinks |
在该目录下容许文件系统使用符号链接 |
Includes |
容许服务器端包含功能 |
IncludesNoExec |
容许服务器端包含功能,但禁止执行CGI 脚本 |
All |
包含除了MultiViews 以外全部特性,若是没有Options 语句,默认为All |
Options
应该设为None
,以防止目录上内容暴露出去,形成安全隐患AllowOverride
设为None
,禁. 止使用.htaccess
文件,而将目录访问控制放在主配置文件的<Directory>
和</Directory>
之间Require
的控制对象,以控制客户端的访问