第五章 Apache优化深入
一、ab压力测试
1、ab是Apache自带的压力测试工具。可对apache、nginx等多种服务器进行测试。对计算机要求很低,但能对目标服务器造成巨大负载。
2、命令格式:ab [参数] [http://]hostname[:port]/path
(1)-n:测试绘画中所执行的请求总数,默认时仅执行一个请求
(2)-c:并发产生的请求个数。默认是一次一个
(3)-t:测试所进行的最大秒数
(4)-v:是指显示信息的详细程度
3、结果参数表
参数 | 示例 | 描述 |
Server Software | Apache/2.2.17 | 版本 |
Server Hostname | www.abc.com | 服务器主机名 |
Server Port | 80 | 端口 |
Document Path | index.html | 测试的页面文档 |
Document Length | 59 bytes | http响应数据的正文长度 |
Concurrency Level | 200 | 并发用户数量 |
Time taken for tests | 1.004 seconds | 所有请求被处理完成所花费的总时间 (秒) |
Complete requests | 2000 | 总请求数 |
Failed requests | 0 | 表示失败的请求数量 |
Write errors | 0 | 错误数量 |
Total transferred | 822822 bytes | 所有请求的响应数据长度总和(http响应数据的头信息和正文数据的长度) |
HTML transferred | 118118 bytes | 所有请求的响应数据中正文数据的总和 |
Requests per second | 1992.65 [#/sec] (mean) | 吞吐率 总数/总时间 |
Time per request | 100.369 [ms] (mean) | 用户平均请求等待时间 |
Time per request | 0.502 [ms] (mean, across all concurrent requests) | 服务器平均等待时间 |
Transfer rate | 800.58 [Kbytes/sec] received | 表示这些请求在单位时间内从服务器获取的数据长度 |
4、未开启压缩模块时测试结果:
5、开启压缩模块后测试结果:
二、Apache工作模式
Apache2.X支持插入式并行处理模块,成为多路处理模块(MPM)。编译Apache时必须选择也只能选择一个MPM。类Unix系统有worker、prefork、event等MPM,不同的MPM会影响到Apache的速度和可伸缩性
1、prefork模式
(1)工作模式:非线程、预派发的Web服务器基于多进程的模式,一个进程处理一个请求
(2)工作模式方式:一个父进程产生子进行,子进程用于监听请求并作出应答
(3)启用模式:Apache2.4以下版本默认启用该模式
(4)参数
①StartServers:服务器启动时建立的子进程数量
②MinSpareServers:空闲子进程的最小数量,默认5
③MaxSpareServers:空闲子进程的最大数量
④ServerLimit:最大的进程数
⑤MaxClients:最大的接入请求数=进程数*进程的线程数
⑥MaxRequestsPerChild:每个子进程在其生命周期内允许最大的请求数量(0为不限制)
(5)参数调优
①MaxClients:最佳值取决于没存大小,调优目标为服务器使用swap前的最大进程数,通常为内存大小/2M的80%
②ServerLimit与MaxClients相同
③MaxSpareServers、MinSpareServers、StartServers与MaxRequestPerChild根据实际情况进行设置
2、worker模式
(1)工作模式:多线程多进程
(2)工作方式:父进程产生子进程,子进程建立一定数量的服务线程和监听线程
(3)模式启用:--with-mpm=worker
(4)参数
①StartServers:服务器启动时建立的子进程数量
②MaxClients:最大接入的请求数量,超过该值将进入等候队列
③MinSpareThreads:最小空闲线程数
④MaxSpareThreads:最大空闲线程数
⑤ThreadsPerChild:每个进程包含固定的线程数
⑥MaxRequestsPerChild:每个子进程在其生命周期内允许最大的请求数量(0为不限制)
(5)参数调优
①ThreadsPerChild是worker中与性能关系最密切的指令。
②ServerLimit*ThreadsPerChild>=MaxClients
③MaxClients:最佳值取决于没存大小,调优目标为服务器使用swap前的最大进程数,通常为内存大小/2M的80%
3、event模式
(1)参数:
①StartServers:服务器启动初始的进程数量
②MinSpareThreads:最小空闲线程数
③MaxSpareThreads:最大空闲线程数
④ThreadsPerChild:每个进程包含固定的线程数
⑤MaxRequestWorkers:限定同一时间内客户端最大接入的请求数量
⑥MaxConnectionsPerChild:每个子进程在其生命周期内允许最大的请求数量
(2)调优与worker模式类似