配置网站,要充分的把系统资源利用出去,榨干系统的一切潜能,让网站速度发挥到极致。Apache,是用户浏览和网站数据的一个中间桥梁。但是在这里,我们虽然做得并不是很多,但是如果心细打理,有些设置也会起到立竿见影的效果。

1、安装Apache的时候,要正确选择MPM

要想让Apache的性能最好,那么第一步要做到的是:选择合适的MPM。

Apache有3个MPM,它们分别是:event、prefork和worker。

其中,event这个MPM比较适用于有大量连续连接的情况。KeepAlive的好处是,可以同一个TCP连接中相应多次请求:这种方式,可以使一个包含大量图片的HTML文档加速50%。在Apahce配置文件httpd.conf中设置KeepAlive为On,就可以启动KeepAlive。

prefork 是一个非线程的MPM,。它的特点是:虽然不是很快,但是很稳定。它能够隔离每个请求,所以,如果某个请求出现故障,不会影响其它请求。使用 prefork最重要的一个参数是MaxClients。这个MaxClients数值要足够大,这样可以在访问高峰时发挥很好的性能;但是同时又不能太大,致使Apache所需内存超出物理内存的大小。

worker是Apache2版本中新开发的MPM,速度比prefork快很多。而且,由于使用多线程进行访问处理,所以能够处理相对海量的请求,而系统资源的占用也要小于基于进程的服务器。worker是Apache 2的主要使用方式。worker有两个比较重要的配置参数,那就是:ThreadsPerChildMaxClients。 ThreadsPerChild用来控制每个子进程允许建立的线程数,MaxClients 用来控制允许建立的总线程数。

那么,这3个MPM要如何选择呢?如果需要更好伸缩性,可以选用worker或event(因为它们是线程化的MPM);如果需要更加好的稳定性和兼容性(比如要适应一些旧的软件),可以选用prefork。《从prefork到worker:修改ubuntu apache工作模式》

如果你仍然无法评估自己的需求,仍然不知道应该选择哪个MPM,那么就推荐使用worker。

2、Apache配置优化

在Ubuntu中,Apache主要配置文件是/etc/apache2/apache.conf,以下就针对这个文件来配置。

(1)关闭DNS查询

HostnameLookups在默认情况是已经被设置为off,务必保持该设置。如果需要统计客户端DNS,那么可以使用第三方软件来实现。

(2)优化MaxClients

Apache2启动的时候会创建一些进程(配置文件中的StartServer设定的数目),并保持一个最大的MaxClients数;每一个超过该数目的连接请求,都会排队等待。

这个MaxClients设置,是和MPM相关的。在apache.conf中,既有针对preforkMaxClients设置,也有针对worker 的。前者在段,后者在段。这里以woker为例,原配置为:
StartServers          2
MaxClients          150
MinSpareThreads      25
MaxSpareThreads      75
ThreadsPerChild      25
MaxRequestsPerChild   0

MaxClients如果要设置超过256的话,就需要同步修改ServerLimit的数值,因为ServerLimit的默认值是256.比如这里需要配置为1024:
StartServers          10
ServerLimit         1024
MaxClients          1024
MinSpareThreads      25
MaxSpareThreads      75
ThreadsPerChild      25
MaxRequestsPerChild   0

那么,要怎么才能知道是不是需要增大MaxClients呢?可以查看Apache2的错误日志文件/var/log/apache2/error.log,如果发现如下内容,就应该增大MaxClients了:

[error] server reached MaxClients setting,consider raising the MaxClients setting

(3)优化KeepAlive

Apache 的KeepAlive这个指令指定一段时间,在这段时间内,可以让服务器和客户端之间持同一个连接。这个特性,有其好处,也有其坏处。好处是,如果客户端发出多个请求,服务端不必每次都花时间去创建连接。坏处就是,这段时间内,即使客户端不再发出新的请求、访问新的页面,这个连接也会被占用,这对服务器资源来说是一种浪费。

在默认情况下,KeepAlive是设置为On的,KeepAliveTimeout设置为15秒。也就是说,在15秒之内,服务器平均每秒连接到150个不同的连接,那么从理论上讲,服务器将同时有15×150=2250个连接,内存消耗比较严重。

那么我们要如何来优化KeepAlive呢?

a、可以禁用KeepAlive(设置为 Off);

b、将KeepAliveTimeout改小,比3或者5秒。

(4)启用压缩优化Apache

在 Apache1.3中,有个gzip模块。在Apache2中,没有了gzip,有一个新的模块叫做deflate。这个模块可以在用户访问网站时实时将内容进行压缩,然后再传给客户端。因为压缩比较高(测试结果显示,其压缩比最高可达97%,最少也有40%),所以deflate能够极大地加速网站,节约带宽。当然,压缩是要花费CPU时间的。

要启用该模块,运行以下命令:

sudo a2enmod deflate

sudo /etc/init.d/apache2 force-reload

该模块有一个配置文件:/etc/apache2/mods-enabled/deflate.conf,可以配置要压缩的文件类型。默认配置为:

AddOutputFilterByType DEFLATE text/html text/plain text/xml

上面配置较为合理,因为一般情况下,不需要对图片、PDF和mp3等文件进行压缩,那是很费资源的事情。关于deflate,这里不详细介绍。

(5)禁止apache不必要的日志

Apache写日志是比较消耗资源的,如果没必要存储日志信息,推荐还是关闭此功能。

(6)使用缓存(mod_cache)提高apache性能

apache2 有两种缓存模块:一种是基于硬盘的,另外一种是基于内存的。前者由mod_disk_cache实现,后者由mod_mem_cache实现,不过它们都需要mod_cache的支持。在基于内存的缓存方式中,还有一个mod_file_cache模块,它是用于搭配mod_mem_cache模块使用的。

之后文章将继续涉及这部分内容,这里就不详细介绍,如有需要,可以参考apache的文档。

3、使用反向代理

通过“反向代理”的方式,可以极大地提高web服务器的相应能力。Squid是一个不错的代理、反向代理服务器,大家可以去了解了解。

通过以上合适的配置,Apache就能够最大限度的挖掘系统资源了!

Apache服务器性能如何优化的更多相关文章

  1. Apache服务器性能监控

    Apache服务器性能监控 1.使用自带mod_status模块监控 1)加载mod_status.so 模块 在httpd.conf中打开LoadModule status_module modul ...

  2. Apache 服务器性能评估

    1 查看当前并发连接数 netstat -an | grep ESTABLISHED | wc -l 2 查看当前进程数 ps aux|grep httpd|wc -l

  3. linux apache服务器优化建议整理(很实用)

    转载:http://www.cnblogs.com/zhongbin/archive/2013/06/11/3131865.html 1.apache服务器的time_wait过多 fin_wait1 ...

  4. DolphinScheduler 集群高可用测试:有效分摊服务器压力,达到性能最大优化!

    点击上方 蓝字关注我们 1 文档编写目的 Apache DolphinScheduler(简称DS)是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台.在生产环境中需要确保调度平台的稳定可靠 ...

  5. Tomcat 生产服务器性能优化

    虑一下这种场景,你开发了一个应用,它有十分优秀的布局设计,最新的特性以及其它的优秀特点.但是在性能这方面欠缺,不管这个应用如何都会遭到客户拒绝.客户总是期望它们的应用应该有更好的性能.如果你在产品中使 ...

  6. apache性能配置优化

    最近在进行apache性能优化设置.在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯.以下的apache配置调优均是在red had的环境下进行的. httpd相关 ...

  7. Apache 性能配置优化

    前言 最近在进行apache性能优化设置.在修改apache配置)文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯.以下的apache配置调优均是在red had的环境下进行的. htt ...

  8. Linux服务器性能评估与优化(一)

    网络内容总结(感谢原创) 1.前言简介 一.影响Linux服务器性能的因素   1. 操作系统级         性能调优是找出系统瓶颈并消除这些瓶颈的过程. 很多系统管理员认为性能调优仅仅是调整一下 ...

  9. 安全开发运维必备,如何进行Nginx代理Web服务器性能优化与安全加固配置,看这篇指南就够了

    本章目录 1.引言 1.1 目的 1.2 目标范围 1.3 读者对象 2.参考说明 2.1 帮助参考 2.2 参数说明 3.3 模块说明 3.服务优化 3.1 系统内核 3.2 编译优化 3.3 性能 ...

随机推荐

  1. Redis探索之路(三):Redis的五种数据类型String和Hash

    一:String 存储二进制数据,可以图片,序列化对象 GET,SET SETNX(not exist)  setnx age 33 返回 0,1 SETEX设置有效期   SETEX COLOR 2 ...

  2. Servlet - Tomcat服务器相关

    1. 服务器 : 服务器其实就是代码编写的一个程序, 可以根据用户发送的请求, 调用执行对应的逻辑代码 2. Tomcat目录结构说明 : \bin : 存放启动和关闭Tomcat的可执行文件 \co ...

  3. MaxCompute小文件问题优化方案

    小文件背景知识 小文件定义 分布式文件系统按块Block存放,文件大小比块大小小的文件(默认块大小为64M),叫做小文件. 如何判断存在小文件数量多的问题 查看文件数量 desc extended + ...

  4. poj 3254 Corn Field

    Description Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; ...

  5. NX二次开发-UFUN工程图更新视图UF_DRAW_update_one_view

    NX9+VS2012 #include <uf.h> #include <uf_draw.h> #include <uf_obj.h> #include <u ...

  6. class4_Listbox 列表部件

    最终的运行效果图: #!/usr/bin/env python# -*- coding:utf-8 -*-# --------------------------------------------- ...

  7. Quartz2作业监听

    在本教程中,我们将展示/介绍如何创建一个JobListener,跟踪运行工作状态在作业完成等. P.S 这个例子是Quartz 2.1.5 1. Quartz 作业 作业 - 用于打印一个简单的信息, ...

  8. 3-Ubuntu下python3安装pymysql模块(1)

    命令:sudo pip3 install pymysql

  9. CentOS7中下载MySQL

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~CentOS 7中,yum默认安装的是Mariadb,但我想使用MyS ...

  10. 【转】详解tomcat的连接数与线程池

    对tomcat线程池.Connector的BIO.NIO解析的很透彻的一篇文章. 原文链接:https://www.cnblogs.com/kismetv/p/7806063.html 前言 在使用t ...