深入优化apache
一-、apache 压力测试和工作模式
1、ab压力测试
1)压力测试的方式
服务器本地压力测试:占用带宽资源小,测试比较精准
客户端模拟海量客户端请求网站进行测试:占用服务器带宽资源大,测试存在误差
2)ab压力测试的特点
apache自带压力测试工具.
在apache.服务器本地访问WEB站点进行测试
使用简单
准确计算apache服务器端最大访问并发量
3)当客户端访问量超出apache服务器端最大负载解决方案
配置负载均衡
配置反响代理加缓存技术
配置双机热备
4) ab压 力测试常见的选项
-n: 总共请求执行次数,默认1
-C: 并发数,默认1
-t: 测试进行的总时间
-V: 显示详细信息
5)使用ab压力测试
[ root@centos01 ~]# ab -n1000 -c 1000 www . benet . com/ index . html
2、apache工作模式
1) prefork
apache默认工作模式
二个父进程生成多个子进程,子进程相应客户端的请求
每个子进程相互独立
子进程运行方式由父进程进行派生启动
2) worker
采用多进程和多线程方式处理客户端请求I
一一个进程下包含多个线程,线程相应客户端请求
使用线程相应客户端请求占用内存资源小
避免内存溢出
支持高并发环境使用
3) event
采用多进程和多线程己经epo11方式相应客户端请求
原理和worker-样
避免长期占用线程导致内存资源浪费
一些CPU不支持event模式
3、配置prefork工作模式
1) prefork模式特点
父进程携带子进程
父进程root管理
子进程使用普通用户管理
子进程必须有权限访问apache
2)查看apache是否支持preforke工作模式
[ root@centos01 ~]#_ httpd -1
3)修改apache主配置文件支持prefork工作模式
[root@centos01 ~]# vim /usr/1ocal/httpd/conf/httpd. conf
371 Include! conf/extra/httpd-mpm. conf
4)修改apache工作模式配置文件
[root@centos01 ~]# vim /usr/1ocal/httpd/conf/extra/httpd- -mpm. conf
<IfModule mpm_ prefork_ module>
ServerLimit 100 最大进程数100
StartServers 5 启动进程数量
MinSpareServers 5 最小空闲进程数量
MaxSpareServers 10 最大空闲进程,必须小于最小空闲进程
MaxCl ients 1020 最大子进程数量,参考最大并发量
MaxRequestsPerChild 1020 子进程最大相应并发量,0表示不会清零容易内存溢出
</ I fModule>
5)重新启动apache
[root@centos01 ~]# /etc/init.d/httpd restart
4、worker
1)编译apache支持worker
[root@centos01.. httpd-2.17]#
./configure --prefix=/usx/1oca1/httpd
--enable-so --with-mpm-worker
2)修改apache工作模式配置文件
[root@centos01 ~]# vim /usr/1ocal/httpd/ conf/extra/httpd- -mpm. conf
<I fModule mpm worker_ module>
ServerLimit 1020最大进程数1020
StartServers 10 开启进程数
MaxClients 2000 客户端请求2000
MinSpareThreads 100 最小空闲进程100
MaxSpa reThreads 150 最大空闲进程
ThreadsPerChild 25 每个进程建立的常驻线程25个
MaxRequestsPerChild 10000 最大访问并发量10000
</ I fModule>
3)重启动apache
[ root @centos01 ~]# systemctl restart httpd
5、apache网站根目录优化
1) apache网站根目录属性常见的选项
allowOverride:允许使用.htaccess控制客户端访问网站目录
Require:设置目录的访问控制
Idexes:客户端没有制定访问那个目录,显示网站根目录总的子目录或者其他文件
MultiViews:访问网站根目录数据不存在可以进行模糊查询
ExecCGI:
允许网站跟目录运行脚本程序
FollowSymLinks:允许使用符号链接
IncludesNoExecCGI:禁止运行脚本程序
All:不包含模糊查询功能,其他都支持
2)配置网站根目录不存在显示子目录支持模糊查询
[root@centos01 htdocs]# vim /usr/ local/httpd/ conf/httpd. conf
144 Options Indexes FollowSymLinks
3)配置访问apache网站限制
[ root@centos01 ~]# vim /usr/local/httpd/ conf/httpd. conf
152 AllowOverride all
4)创建.htaccess限制文件
[ root@centos01 ~]# vim /usr/ 1ocal/httpd/htdocs/ .htaccess
order deny, allow
deny from all