Apache配置的5个技巧
AcceptMutex
Apache 1.3.21和Apache 2.0中引入了AcceptMutex 指示符,该指示符给调节服务器的性能带来了一个难得的机会。该指示符配置Apache的accept()处理方式。在某些只有一个侦听器的系统上是不需要接受阻塞的。这就叫Single Listen Unserialized Accept (SLUA)。可是,对那些具有多个侦听器的配置或者在接受系统调用函数上(不管有多少个侦听器)存在thundering herd问题的操作系统上,连接接受程序就必须进行串行化了。
Covalent的Sander Temme对accept()阻塞策略进行了一定程度的性能分析。这份报告总结了Apache 1.3.21在这一方面的有关调整策略,如下所示:
Irix的uslock (uslock)
POSIX跨进程阻塞 (pthread)
SystemV Semaphores (sysvsem)
fcntl()阻塞(fcntl)
flock()阻塞 (flock)
OS/2 Semaphores (os2sem)
TPF 阻塞 (tpfcore)
None(无)
尽管采用AcceptMutex none也是可能的,但是你的系统在这种配置下有可能受到thundering herd问题和死锁的困扰。这些问题会导致服务器减慢处理速度乃至停止响应。none选项绝对不能用在实际系统上。在非正式的测试下,pthread锁应该是最好的解决方案。然而,pthread跨进程阻塞并不是所有系统都可用的。
采用2.0版和线程(worker MPM)
Apache 2.0有一个显著的改进特性就是支持线程。某些操作系统,比如Solaris,在采取线程技术的条件下可以显著地改进系统性能。而其他操作系统,比如Linux,其性能改进就可能并不是很显著。
在采用Apache 2.0的情况下,处理请求的策略已经理论化了,这就是所谓的MPM:多进程模式(Multi Process Model)。而老一些的Apache 1.3模式则以prefork MPM为代表,在Unix平台上就是默认MPM for 2.0 。在这种模式下有一个独立的进程处理每一请求。可是,假如你编译Apache 2.0的时候带 --with-mpm=worker 选项,那么服务器请求就会由线程来处理。这种方法在精心设计线程实现方案的情况下会大大降低操作系统处理请求的负载。
SSL会话缓存
如果你对Apache 1.3或者在Apache 2.0采用了mod_ssl补充插件(在在Apache 2.0中则已经包含在内),那么你可以采用会话缓存提升系统性能。这种改进会显著降低SSL连接负载。设置会话缓存有三种途径:
DBM (dbm),这是一种在磁盘上存储项目的常用格式(htpasswd可以DBM格式存储密码)
共享内存循环缓存(shm 或者shmcb)
共享内存哈系表(shmht)
在采用以上选项的时候需要指定文件路径。在使用DBM变量的情况下,文件将被写入磁盘。而对共享内存变量来说,文件将被用做操作系统优选共享内存机制的存储备份。值得注意的是,大多数操作系统不允许共享内存段建立在通过网络装载(mount)的驱动器上,比如NFS等,所以必须给服务器提供文件路径。
我们建议你采用共享内存,不过,在那些没有共享内存的平台上则不妨采用DBM方案。
KeepAliveTimeout
假设某位用户在阅读网站上的某一网页,然后它单击某一导向站内另一网页的链接。假如这一过程发生在KeepAliveTimeout 周期之内(默认为15秒),那么就不必创建新的TCP服务器连接。这样做大大减少了计算机的负载。然而,在这一时间区域内服务器也不能处理更多的请求。KeepAliveTimeout周期过后,服务器才可以处理来自不同客户机的最新请求。因此,你必须增加请求进程或者线程的数量以满足空闲请求的需要。这个值应该进行仔细的调整以达到最佳状态。
采用mod_status
采用mod_status检查服务器负载情况可以从中获得调整服务器性能的重要信息。清单A 给出了httpd.conf文件内必要的指示符示例。
在清单A中,来自127.0.0.1或者由具有双反斜线域名example.com的计算机所发出的请求都被允许通过进入/server-status来阅读服务器的状态。而其他的全部请求则被拒绝。当然,具体使用的时候你得用网站上的正确信息取代.example.com或者127.0.0.1。注意,某些操作系统会让Apache觉得发自本机的请求像是来自配置为外部IP地址而非127.0.0.1的主机。
apachectl status命令是检查服务器状态的快捷途径。假如该命令的输出结果并没有始终如一的显示出可用的工作进程。那么最好增大MinSpareServers或者MinSpareThreads值(在Apache 2.0采用线程化MPM的情况下)。同时你可能还需要增大MaxClients值。
Apache配置的5个技巧的更多相关文章
- Mac OS X 上的Apache配置
Mac系统自带apache服务器 查看apache版本 sudo apachectl -v 启动apache sudo apachectl start 重启apache sudo apachectl ...
- apache配置 php中没有php5apache2_4.dll
apache配置 php中没有php5apache2_4.dll 今天,在win7系统下安装Apache+PHP+MySQL时,终于体会到了版本多也不一定是好事,各种不兼容,主要是因为动态包的多少问题 ...
- Apache 配置多站点访问「为项目分配二级域名」
一级域名(baidu.com)也叫作顶级域名,注册一级域名是需要付费的. 而二级域名(image.baidu.com)是一级域名的延伸,所以只要购买了一级域名,二级域名是可以任意配置的. 其实(www ...
- 【转】Apache 配置虚拟主机三种方式
Apache 配置虚拟主机三种方式 原文博客http://www.cnblogs.com/hi-bazinga/archive/2012/04/23/2466605.html 一.基于IP 1. 假 ...
- Tomcat:利用Apache配置反向代理、负载均衡
本篇主要介绍apache配置反向代理,介绍了两种情况:第一种是,只使用apache配置反向代理:第二种是,apache与应用服务器(tomcat)结合,配置反向代理,同时了配置了负载均衡. 准备工作 ...
- Apache 配置多端口
Apache 配置多端口,主要是以下步骤 1. 如果电脑是64位的,官网上下载WampServe,装的过程中如果出现msvcp110.dll丢失的话,解决办法如下: 1.1 首先是打开浏览器,在浏览器 ...
- linux apache 配置URL地址栏大小写不敏感配置
1.apache配置 解决如下:把mod_speling.so放到apache目录下的 lib中... 然后修改http.conf文件, 加入:LoadModule speling_module /u ...
- CentOS下Apache配置多域名或者多端口映射
CentOS下Apache默认网站根目录为/var/www/html,假如我默认存了一个CI项目在html文件夹里,同时服务器的外网IP为ExampleIp,因为使用的是MVC框架,Apache需开启 ...
- Apache配置HTTPS功能
apache配置https 一.yum 安装openssl和openssl-devel,httpd-devel 二.生成证书(也可以从公司的证书颁发机构获取): #建立服务器密钥 openssl ge ...
随机推荐
- Segmented 标签栏 切换效果
转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0512/1615.html http://www.it165.net/pr ...
- NHibernate VS IbatisNet
NHibernate 是当前最流行的 Java O/R mapping 框架Hibernate 的移植版本,当前版本是 1.0 .2 .它出身于sf.net..IbatisNet 是另外一种优秀的 ...
- java读取项目资源文件的方法
1.把资源文件放在项目的Resource文件夹下,并使其设置成为资源文件夹(通过idea或者eclise)2. Thread.currentThread().getContextClassLoader ...
- java如何遍历当月所有的日期?
转自:https://zhidao.baidu.com/question/360215274.html import java.util.ArrayList;import java.util.Cale ...
- python if x:
# !usr/bin/env python # -*- coding:utf-8 _*- """ @author:happy_code @email: happy_cod ...
- jquery ajax 传数据到后台乱码的处理方法
前台页面先对中文进行编码,如下红色字体: function saveCommentTemplate() { $.ajax({ cache : false, type:'get', dataType:' ...
- JAVA 遍历文件夹下的所有文件(递归调用)
package file; import java.io.File; public class Test1 { public static void main(String[] args) { Str ...
- ASP.NET Identity 2集成到MVC5项目--笔记02
ASP.NET Identity 2集成到MVC5项目--笔记01 ASP.NET Identity 2集成到MVC5项目--笔记02 继上一篇,本篇主要是实现邮件.用户名登陆和登陆前邮件认证. 1. ...
- PHP 防止恶意用户快速刷新页面
<?php /** * 防止快速刷新 * */ session_start(); header("Content-type:text/html;charset=utf-8") ...
- scrapy 原理,结构,基本命令,item,spider,selector简述
原理,结构,基本命令,item,spider,selector简述 原理 (1)结构 (2)运行流程 实操 (1) scrapy命令: 注意先把python安装目录的scripts文件夹添加到环境变量 ...