Apache优化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache优化相关的知识,希望对你有一定的参考价值。
优化:根据用户访问量(UV、PV)及其它综合考虑,调整系统及软件的参数,将服务器性能最大化利用
并发:同一时刻网站的访问量
用户浏览量UV(Unique Visitor):既独立访客,访问您的网站的上网电脑数量(以cookie为依据)。(单用户刷新算一次)
页面浏览量PV(PageView):当天网站的访问量(单用户刷新算多次)。此指标衡量网站访问量情况。
一、Apache调优
(1)调研(如apache需调研用户访问量、需要调整的内容、防盗链等)
(2)实施优化(优化未上线服务器,提升服务器性能和并发量)
(3)测试性能
ab <-nN总连接数> <-cN并发数> <网站(如:www.baidu.com/index.html)> //测试服务器访问性能
选项:
-k:使用HTTP连接保持
-c:请求的进程数
-n:请求的线程数
(4)上线
准备域名、公网IP→服务器→部署服务(Apache) → 网页文件
(5)DNAT(服务器内网IP:80映射公网IP:80)
www.hiahia.com:80 --> 服务器公网IP:80(23.12.45.11:80) --> 服务器内网IP:80(192.168.1.10:80)
二、Apache工作模式
1.perfork
(1)没有线程概念,是多进程模型,一个进程处理一个连接,稳定、快;当连接数大时消耗大量内存
(2)优化
vim /usr/local/httpd/conf/httpd.conf
<ifModule mpm_prefork_module>
ServerLimit 40 //最大开启的进程数
StartServers 2 //服务器启动时建立的子进程数
Maxclients 1000 //允许同时接入最大请求数量(最大线程数量)
MinSpareThreads 5 //空闲进程最小数量
ThreadsPerChild 150 //进程建立的子进程常驻数
MaxRequestPerChild 1000 //每个子进程在存活期间允许的最大请求数量
</ifModule>
2.worker
(1)多进程、多线程,一个进程多个线程,一个线程处理一个连接;与perfork更省内存,与php等有兼容问题
(2)优化
vim /usr/local/httpd/conf/httpd.conf
<ifModule mpm_worker_module>
ServerLimit 40 //最大开启的进程数
ThreadLimit 200 //每个进程最大开启的线程数
StartServers 2 //服务器启动时建立的子进程数
Maxclients 1000 //允许同时接入最大请求数量(最大线程数量)
MaxSpareThreads 100 //空闲线程最大数量
MinSpareThreads 5 //空闲线程最小数量
ThreadsPerChild 150 //每个子进程建立的常驻线程数
MaxRequestPerChild 1000 //每个子进程在存活期间允许的最大请求数量
</ifModule>
3.event
worker增强版,提供更好的并发负载能力,不能很好与https支持
vim /usr/local/httpd/conf/httpd.conf
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
4.查看当前工作模式:httpd -V
三、Apache其余优化方式
1.网页压缩
a.查询是否安装mod_deflate模块
b.修改配置文件启动模块
c.测试
(1)判断是否支持mod_deflate模块
apachectl -t -D DUMP_MODULES //查看是否deflate_module
//也可以使用apachectl -l
查看安装的所有模块
(2)重新编译安装支持模块
a.httpd-2.2.x
cd httpd-2.2.17/
yum -y install zlib-devel
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --enable-deflate
make && make install
b.httpd-2.4.x
cd httpd-2.4.34/ //进入解压目录
yum -y install zlib-devel //yum安装zlib-devel包
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre **--enable-deflate** //配置安装压缩模块
make && make install //编译并安装
(3)修改配置文件启动模块支持
a.httpd-2.2.x
vim /usr/local/httpd/conf/httpd.conf
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript //指定需要压缩的文件格式
DeflateCompressionLevel 9 //指定压缩的等级
SetOutputFilter DEFLATE //对所有输出启用压缩
b.httpd-2.4.x
vim /usr/local/httpd/conf/httpd.conf
105 LoadModule deflate_module modules/mod_deflate.so //加载deflate模块
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript //指定需要压缩的文件格式
DeflateCompressionLevel 9 //指定压缩的等级
SetOutputFilter DEFLATE //对所有输出启用压缩
</IfModule>
(4)验证
/etc/init.d/httpd restart //重启httpd服务
注:httpd1.x和2.x都使用gzip压缩算法
2.网页缓存
a.查询是否安装mod_expire模块
b.修改配置文件启动模块
c.测试
(1)判断是否支持mod_expire模块
apachectl -t -D DUMP_MODULES //查看是否expire_module
(2)重新编译安装支持模块
a.httpd-2.2.x
cd httpd-2.2.17/
yum -y install zlib-devel
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --enable-deflate --enable-expires
make && make install
b.httpd-2.4.x
cd httpd-2.4.34/
yum -y install zlib-devel
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --enable-deflate --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre **--enable-expires** //配置添加缓存模块
make && make install //编译并安装
(3)修改配置文件启动模块支持
a.httpd-2.2.x
vim /usr/local/httpd/conf/httpd.conf
<ifModule mod_expires.c>
ExpiresActive On //开启expires模块
ExpiresDefault "access plus 60 seconds" //缓存60秒
</ifModule>
b.httpd-2.4.x
vim /usr/local/httpd/conf/httpd.conf
111 LoadModule expires_module modules/mod_expires.so
<ifModule mod_expires.c>
ExpiresActive On //开启expires模块
ExpiresDefault "access plus 60 seconds" //缓存60秒
</ifModule>
(4)验证
/etc/init.d/httpd restart //Expires:Sun, 04 Mar 2018 02:58:59 GMT
3.防盗链
a.查询是否安装mod_rewrite模块
b.修改配置文件启动模块
c.测试
(1)判断是否支持mod_rewrite模块
apachectl -t -D DUMP_MODULES //查看是否rewrite_module
(2)修改配置文件启动模块支持
注:httpd2.2.x这里与httpd2.4.x写法一样
vim /usr/local/httpd/conf/httpd.conf
httpd-2.4
159 LoadModule rewrite_module modules/mod_rewrite.so
226 <Directory "/usr/local/httpd/htdocs">下
252 RewriteEngine On //启用rewrite地址重写功能
253 RewriteCond %{HTTP_HOST} !^www.hiahia.com [NC] //定义信任的站点
254 RewriteRule .*.(.gif|jpg|swf|mp4|mp3)$ http://aa.com/a.html[R,NC] //将未信任站台,以gif、jpg等结尾访问站点的全部重定向到http://aa.com/a.html
/etc/init.d/httpd restart //重启服务
(3)测试
①编辑Windows的hosts文件(C:WindowsSystem32driversetchosts)写入下面两条,便于客户端访问
192.168.10.200 www.hiahia.com //Apache服务器的IP与对应域名
192.168.10.100 www.hehe.com //要盗链的服务器
②将要浏览的文件放到Apache服务器的/usr/local/httpd/htdocs/下
③在要盗链的服务器,新建网页文件,盗取地址
④客户端访问:
www.hiahia.com/文件 //允许访问
www.hehe.com/hehe.html //不允许访问,自动跳转到aa.com/a.html
4.隐藏版本信息
vim /usr/local/httpd/conf/httpd.conf
ServerTokens Prod //只显示Web服务器软件
ServerSignature Off //关闭管理员信息
/etc/init.d/httpd restart //重启服务
以上是关于Apache优化的主要内容,如果未能解决你的问题,请参考以下文章
环境初始化 Build and Install the Apache Thrift IDL Compiler Install the Platform Development Tools(代码片段
spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)(代码片段
Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段