Apache的性能调整
- 格式:pdf
- 大小:314.76 KB
- 文档页数:24
Apache服务器的设置文件位于/usr/local/apache/conf/目录下,传统上使用三个配置文件httpd.conf,access.conf和srm.conf,来配置Apache服务器的行为。
httpd.conf提供了最基本的服务器配置,是对守护程序httpd如何运行的技术描述;srm.conf是服务器的资源映射文件,告诉服务器各种文件的MIME类型,以及如何支持这些文件;access.conf用于配置服务器的访问权限,控制不同用户和计算机的访问限制;这三个配置文件控制着服务器的各个方面的特性,因此为了正常运行服务器便需要设置好这三个文件。
除了这三个设置文件之外,Apache还使用mime.types文件用于标识不同文件对应的MIME类型,magic文件设置不同MIME类型文件的一些特殊标识,使得Apache 服务器从文档后缀不能判断出文件的MIME 类型时,能通过文件内容中的这些特殊标记来判断文档的MIME类型。
bash-2.02$ ls -l /usr/local/apache/conftotal 100-rw-r--r-- 1 root wheel 348 Apr 16 16:01 access.conf-rw-r--r-- 1 root wheel 348 Feb 13 13:33 access.conf.default-rw-r--r-- 1 root wheel 30331 May 26 08:55 httpd.conf-rw-r--r-- 1 root wheel 29953 Feb 13 13:33 httpd.conf.default-rw-r--r-- 1 root wheel 12441 Apr 19 15:42 magic-rw-r--r-- 1 root wheel 12441 Feb 13 13:33 magic.default-rw-r--r-- 1 root wheel 7334 Feb 13 13:33 mime.types-rw-r--r-- 1 root wheel 383 May 13 17:01 srm.conf-rw-r--r-- 1 root wheel 357 Feb 13 13:33 srm.conf.default事实上当前版本的Apache将原来httpd.conf、srm.conf与access.conf中的所有配置参数均放在了一个配置文件httpd.conf中,只是为了与以前的版本兼容的原因(使用这三个设置文件的方式来源于NCSA-httpd),才使用三个配置文件。
服务器性能优化的常用方法一、概述随着互联网的快速发展,服务器性能优化成为了保障网站正常运行和提供良好用户体验的关键步骤。
本文将介绍一些常用的服务器性能优化方法。
二、硬件优化1. 增加内存容量:将服务器的内存容量扩大可以提高系统的处理能力,减少因为内存不足而导致的性能瓶颈。
2. 更换高性能的硬盘:使用高速固态硬盘(SSD)替换传统机械硬盘,可以提高数据读写速度,加快服务器的响应时间。
3. 使用多核处理器:选择具有多核心的处理器可以同时处理更多的任务,提高服务器的并发处理能力。
4. 网络优化:使用高速网络接口卡(NIC)和交换机,以及合理布局服务器与用户之间的物理网络连接。
三、软件优化1. 数据库优化:a. 索引优化:在数据库的关键字段上添加索引可以提高查询性能。
b. 查询优化:合理使用查询语句,尽量减少对数据库的频繁访问。
c. 数据库缓存:使用缓存技术,将热门数据缓存在内存中,减少对数据库的访问次数。
2. Web服务器优化:a. 使用高性能的Web服务器软件,如Nginx、Apache等。
b. 配置合适的服务器参数,如连接数、缓存大小等,以提高服务器的并发处理能力。
c. 静态资源优化:使用CDN(Content Delivery Network)分发静态资源,以减轻服务器的负载压力。
3. 应用程序优化:a. 代码优化:对应用程序代码进行优化,提高代码执行效率。
b. 异步处理:将一些耗时的操作改为异步处理,如异步加载图片、异步提交表单等,以提高用户响应速度。
c. 缓存优化:合理使用缓存技术,减少对数据库和其他资源的访问。
4. 网络传输优化:a. 压缩数据:使用压缩算法对网络传输的数据进行压缩,减少数据传输的大小,提高网络传输效率。
b. HTTP/2协议:使用新的HTTP协议版本,提供更快的数据传输速度和更好的性能优化。
c. CDN加速:使用CDN加速服务,将网站内容分发到全球各地的加速节点,缩短数据传输的距离和时间。
后端性能优化:如何提高服务器的响应速度和吞吐量先进的技术、高效的算法与合理的调优是提高服务器的响应速度和吞吐量的关键。
后端性能优化是一个综合性的工程,需要从硬件、操作系统、网络、数据库、中间件以及业务代码角度共同思考。
本文将从这几个方面详细介绍如何优化后端性能,以提高服务器的响应速度和吞吐量。
一、硬件优化服务器的性能直接受硬件配置的影响。
因此,提高服务器性能的首要任务就是对硬件进行合适的优化。
常见的硬件优化包括:1. CPU优化:选择高性能的CPU,比如采用多核多线程的CPU,能够有效提高服务器的运算能力。
2.内存优化:合理配置内存大小,可以减少由于内存不足导致的频繁磁盘读写,从而提高性能。
3.磁盘和存储优化:选择高速的磁盘和存储设备,比如固态硬盘,能够提高数据读写速度,从而加快服务器的响应速度。
4.网卡优化:选择高性能的网卡,能够提高数据传输速度,从而提高服务器的吞吐量。
5.服务器整体架构优化:选择合适的机箱、风扇、散热系统等设备,能够保证服务器的稳定性,从而提高服务器的稳定性和性能。
二、操作系统优化操作系统是服务器的核心,合理配置操作系统能够提高服务器的响应速度和吞吐量。
常见的操作系统优化包括:1.内核优化:调整系统内核参数,比如调整文件句柄数、网络缓冲区大小等,能够提高系统的性能。
2.磁盘IO优化:配置磁盘IO调度算法,选择合适的IO调度算法,能够提高磁盘读写性能,从而加快数据访问速度。
3.网络优化:调整网络参数,比如调整TCP连接数限制、调整TCP 缓冲区大小等,能够提高网络传输效率,从而提高服务器的吞吐量。
4.内存管理优化:合理配置内存大小,选择合适的内存调度算法,能够减少内存碎片,提高系统的稳定性和性能。
5.安全配置优化:合理配置防火墙、安全软件等,能够保障系统的安全性,从而提高服务器的稳定性和性能。
三、网络优化网络是服务器与客户端之间的桥梁,优化网络能够提高服务器的响应速度和吞吐量。
1. 开启Keep-Alive开启Keep-Alive后,可以保证浏览器和服务器之间的连接持久存在,这样如果同一个域名请求很多资源的情况下可以省去建立连接的时间和资源消耗。
所以对于静态服务器来说,由于一个域名会请求N多资源,比较宜开启Keep-Alive,但是对于动态服务器,不宜开启Keep-Alive,因为这样会造成很多的空闲进程,浪费内存空间。
配置:KeepAlive On #开启KeepAliveKeepAliveTimeout 5 #保持连接5秒2. HTTP缓存设置当直接在浏览器中输入一个URL,或者点击一个链接的时候,那么浏览器缓存就会起作用,如果缓存没有过期,那么浏览器会从本地读取资源,不会发起HTTP请求,如果缓存过期,那么浏览器会发起新的浏览器请求。
按ctrl+F5,浏览器会情况本地缓存,重新请求资源。
Expires是HTTP/1.0的缓存头,Cache-Control: max-age 是HTTP/1.1是用来进行HTTP缓存的头。
Expires指定了资源过期的绝对时间,GMT格式,Cache-Control: max-age 指定了资源过期的相对时间,单位是秒。
在支持HTTP/1.1的浏览器上,如果发送两个头,那么Cache-Control: max-age会覆盖掉Expires;在支持HTTP/1.0的浏览器上,即使发送了两个头,但是只有Expires会起作用,所以为了兼容老的浏览器,还是要同时发送这两个头。
设置HTTP缓存,需要安装expires_module,其会发送Expires和Cache-Control: max-age两个HTTP头。
配置:ExpiresActive OnExpiresByType application/x-javascript "access plus 30 days"ExpiresByType text/css "access plus 30 days"ExpiresByType image/gif "access plus 30 days"ExpiresByType image/jpeg "access plus 30 days"ExpiresByType image/png "access plus 30 days"ExpiresByType application/x-javascript “access plus 30 days”表示对js资源设置Expires和Cache-Control: max-age头,其中Expires的值是以客户端访问资源的时间为基准的后30天,Cache-Control: max-age的值是3600x24x30秒。
Apache常用模块和参数1Apache服务配置指令1.1基本配置命令AccessFileName语法AccessFileName filename默认值AccessFileName .htaccess作用域server config, virtual host此命令是针对目录的访问控制文件的名称;AddDefaultCharset语法AddDefaultCharset On|Off|charset默认值AddDefaultCharset Off作用域server config, virtual host, directory, .htaccess用于指定默认的字符集,在HTTP的回应信息中,若在HTTP头中未包含任何关于内容字符集类型的参数时,此指令指定的字符集添加到HTTP头中,此时将覆盖网页文件中通过META 标记符所指定的字符集.默认字符集为: AddDefaultCharset UTF-8 若显示中文时出现乱码,解决方法是将字符集设置为GB2312,即: AddDefaultCharset GB2312DefaultType语法DefaultType MIME-type默认值DefaultType text/plain作用域server config, virtual host, directory, .htaccess服务器不知道文件类型时,用缺省值通知客户端;DocumentRoot设置Apache提供文件服务的目录;ErrorDocument设置当有问题发生时,Apache所做的反应;ForceType此指令强制所有匹配的文件被当作在MIME-type中指定的Content-Type来伺服。
比如说,如果您有一个包含大量GIF文件的目录,可您又不想全都为它们加上".gif"扩展名的话,您可以这样做:型的扩展名。
你可以通过使用"None"覆盖任何ForceType设置:<IfModule>使用不包含在Apache安装中的模块的命令Include包含其它的配置文件Listen默认值:80Listen命令告诉服务器接受来自指定端口或者指定地址的某端口的请求,如果listen仅指定了端口,则服务器会监听本机的所有地址;如果指定了地址和端口,则服务器只监听来自该地址和端口的请求Options控制某个特定目录所能使用的服务器功能;其值有:None:表示只能浏览,FollowSymLinks:允许页面连接到别处,ExecCGI:允许执行CGI,MultiViews:允许看动画或是听音乐之类的操作,Indexes:允许服务器返回目录的格式化列表,Includes:允许使用SSI。
Apache的KeepAlive参数在Apache中,KeepAlive是HTTP协议中的一个特性,用于在同一个TCP连接上连续发送多个HTTP请求和响应。
它允许在单个连接上重用已经建立的TCP连接,从而减少了TCP连接的建立和关闭的开销,提高了性能。
在Apache中,有几个与KeepAlive相关的参数可以配置:1. KeepAlive:用于启用或禁用KeepAlive功能。
设置为Off表示禁用KeepAlive,设置为On表示启用KeepAlive。
2. MaxKeepAliveRequests:设置在单个KeepAlive连接上允许发送的最大HTTP请求次数。
当达到该次数后,Apache会关闭当前的KeepAlive连接,并建立新的连接。
这个参数的默认值是100,可以根据实际需求进行调整。
3. KeepAliveTimeout:设置KeepAlive连接的超时时间。
当在指定的时间内没有新的请求到达,Apache会主动关闭KeepAlive连接。
这个参数的默认值是5秒,可以根据实际需求进行调整。
4. MaxRequestsPerChild:设置每个工作进程处理的最大请求数。
当达到该请求数后,Apache会重启工作进程,以防止内存泄漏等问题。
这个参数的默认值是0,表示不限制请求数。
如果设置为非零值,可以提高服务器的稳定性。
通过适当地调整这些参数,可以优化Apache的性能和资源利用率。
下面是一些常见的优化建议:1. 启用KeepAlive功能,以减少TCP连接的建立和关闭的开销。
将KeepAlive参数设置为On。
2. 调整MaxKeepAliveRequests参数,以平衡TCP连接的重用和资源的释放。
如果服务器有足够的资源,可以增加这个值,以减少连接的重建次数。
3. 调整KeepAliveTimeout参数,以适应不同类型的应用场景。
如果网站的请求频率较高,可以将该值设置为较小的值,以提高性能。
apache2的性能提升时间:2006-10-25 12:23:31 来源:Linux联盟收集作者:Apache 2.0在性能上的改善最吸引人。
在支持POSIX线程的Unix系统上,Apache可以通过不同的MPM运行在一种多进程与多线程相混合的模式下,增强部分配置的可扩充性能。
相比于Apache 1.3,2.0版本做了大量的优化来提升处理能力和可伸缩性,并且大多数改进在默认状态下即可生效。
但是在编译和运行时刻,2.0也有许多可以显著提高性能的选择。
本文不想叙述那些以功能换取速度的指令,如HostnameLookups等,而只是说明在2.0中影响性能的最核心特性:MPM(Multi -Processing Modules,多道处理模块)的基本工作原理和配置指令。
毫不夸张地说,MPM的引入是Apache 2.0最重要的变化。
大家知道,Apache是基于模块化的设计,而Apache 2.0更扩展了模块化设计到Web服务器的最基本功能。
服务器装载了一种多道处理模块,负责绑定本机网络端口、接受请求,并调度子进程来处理请求。
扩展模块化设计有两个重要好处:◆ Apache可以更简洁、有效地支持多种操作系统;◆服务器可以按站点的特殊需要进行自定制。
在用户级,MPM看起来和其它Apache模块非常类似。
主要区别是在任意时刻只能有一种MPM被装载到服务器中。
指定MPM的方法下面以Red Hat Linux 9为平台,说明在Apache 2.0中如何指定MPM (Apache采用2.0.45)。
先解压缩源代码包httpd-2.0.45.tar.gz,生成httpd-2.0.45目录(Apache 1.3源代码包的命名规则是apache_1.3.NN.tar.gz,而2.0版则是httpd-2.0.NN.tar.gz,其中NN是次版本号)。
进入httpd-2.0.45目录,运行以下代码:$ ./configure --help|grep mpm显示如下:--with-mpm=MPMChoose the process model for Apache to use.MPM={ beos|worker|prefork|mpmt_os2| perchild|leader|threadpool }上述操作用来选择要使用的进程模型,即哪种MPM模块。
apache worker性能调优worker的工作原理及配置相对于prefork,worker是2.0 版中全新的支持多线程和多进程混合模型的MPM。
由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。
但是,worker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性。
这种MPM的工作方式将是Apache 2.0的发展趋势。
在configure -with-mpm=worker后,进行make编译、make install安装。
在缺省生成的httpd.conf中有以下配置段:StartServers 2MaxClients 150MinSpareThreads 25MaxSpareThreads 75ThreadsPerChild 25MaxRequestsPerChild 0worker的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。
同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数。
如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。
MinSpareThreads和MaxSpareThreads的最大缺省值分别是75和250。
这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节。
ThreadsPerChild是worker MPM中与性能相关最密切的指令。
ThreadsPerChild的最大缺省值是64,如果负载较大,64也是不够的。
这时要显式使用ThreadLimit指令,它的最大缺省值是20000。
上述两个值位于源码树server/mpm/worker/worker.c中的以下两行:#define DEFAULT_THREAD_LIMIT 64#define MAX_THREAD_LIMIT 20000这两行对应着ThreadsPerChild和ThreadLimit的限制数。
Apache的性能调整✓出处:站长百科✓原文地址:/wiki/Apache的性能调整✓本电子书整理自站长百科Apache的性能调整词条,查看内容请访问网站。
目录Apache的性能调整 (1)性能方面的提示 (2)硬件和操作系统 (2)运行时的配置 (3)HostnameLookups 和其他DNS考虑 (4)FollowSymLinks 和 SymLinksIfOwnerMatch (5)AllowOverride (6)内容协商 (6)内存映射 (7)Sendfile (8)进程的建立 (8)编译时的配置 (9)模块 (10)原子操作 (10)SPARC上的Solaris (11)多socket情况下的串行accept (11)AcceptMutex flock (15)AcceptMutex fcntl (15)AcceptMutex sysvsem (15)AcceptMutex pthread (16)AcceptMutex posixsem (16)单socket情况下的串行accept (17)延迟的关闭 (17)Scoreboard 文件 (19)DYNAMIC_MODULE_LIMIT (20)踪迹的详细分析 (20)更多电子书 (23)站长百科源码下载,提供国内外优秀php、asp、jsp源代码程序,更有CMS、编程技术等丰富电子书,站长百科教程组倾力打造的视频教程,是你学习的最佳选择。
✓出处:站长百科推荐内容: 人民币付款的国外IDC商 |LunarPpages优惠码性能方面的提示Apache2.0是一个多用途的web服务器,其设计在灵活性、可移植性和性能中求得平衡。
虽然没有在设计上刻意追求性能指标,但是Apache2.0仍然在许多现实环境中拥有很高的性能。
相比于Apache 1.3 ,2.0版本作了大量的优化来提升处理能力和可伸缩性,而且大多数的改进在默认状态下就可以生效。
但是,在编译时和运行时,都有许多可以显著提高性能的选 择。
本文阐述在安装Apache2.0时,服务器管理员可以改善性能的各种方法。
其中,部分配置选择可以使httpd更好地利用硬件和操作系统的兼容性, 其他则是以功能换取速度。
硬件和操作系统影响web服务器性能的最大的因素是内存。
一个web服务器应该从不使用交换机制,因为交换产生的滞后使用户总感觉"不够快",所以用户就可能去 按"停止"和"刷新",从而带来更大的负载。
你可以,也应该,控制MaxClients的设置,以避免服务器产生太多的子进程而发生交换。
这个过程很简 单:通过top 命令计算出每个Apache进程平均消耗的内存,然后再为其它进程留出足够多的内存。
其他因素就很普通了,装一个足够快的CPU,一个足够快的网卡,几个足够快的硬盘,这里说的"足够快"是指能满足实际应用的需求。
操作系统是很值得关注的又一个因素,已经被证实的很有用的经验有:选择能够得到的最新最稳定的版本并打好补丁。
近年来,许多操作系统厂商都提供了可以显著改善性能的TCP协议栈和线程库。
✓出处:站长百科如果你的操作系统支持sendfile()系统调用,则务必安装带有此功能的版本或补丁(译者注:Linux2.4/2.6内核都支持;对 Solaris8的早期版本,则需要安装补丁)。
在支持sendfile的系统中,Apache2可以更快地发送静态内容而且占用较少的CPU时间。
运行时的配置相关模块mod_dirmpm_commonmod_status相关指令AllowOverrideDirectoryIndexHostnameLookupsEnableMMAPEnableSendfileKeepAliveTimeoutMaxSpareServersMinSpareServersOptions✓出处:站长百科StartServersHostnameLookups 和其他DNS考虑在Apache1.3以前的版本中,HostnameLookups默认被设为 On 。
它会带来延迟,因为对每一个请求都需要作一次DNS查询。
在Apache1.3中,它被默认地设置为 Off 。
如果需要日志文件提供主机名信息以生成分析报告,则可以使用日志后处理程序logresolve ,以完成DNS查询,而客户端无须等待。
推荐你最好是在其他机器上,而不是在web服务器上执行后处理和其他日志统计操作,以免影响服务器的性能。
如果你使用了任何"Allow from domain"或"Deny from domain"指令(也就是domain使用的是主机名而不是IP地址),则代价是要进行两次DNS查询(一次正向和一次反向,以确认没有作假)。
所以, 为了得到最高的性能,应该避免使用这些指令(不用域名而用IP地址也是可以的)。
注意,可以把这些指令包含在<Location /server-status>段中使之局部化。
在这种情况下,只有对这个区域的请求才会发生DNS查询。
下例禁止除了.html 和.cgi以外的所有DNS查询:HostnameLookups off<Files ~ "\.(html|cgi)$">HostnameLookups on</Files>如果在某些CGI中偶尔需要DNS名称,则可以调用gethostbyname来解决。
✓出处:站长百科FollowSymLinks 和 SymLinksIfOwnerMatch如果网站空间中没有使用 Options FollowSymLinks ,或使用了 Options SymLinksIfOwnerMatch ,Apache就必须执行额外的系统调用以验证符号连接。
文件名的每一个组成部分都需要一个额外的调用。
例如,如果设置了:DocumentRoot /www/htdocs<Directory />Options SymLinksIfOwnerMatch</Directory>在请求"/index.html"时,Apache将对"/www"、"/www/htdocs"、"/www/htdocs /index.html"执行lstat()调用。
而且lstat()的执行结果不被缓存,因此对每一个请求都要执行一次。
如果确实需要验证符号连接的安 全性,则可以这样:DocumentRoot /www/htdocs<Directory />Options FollowSymLinks</Directory><Directory /www/htdocs>Options -FollowSymLinks +SymLinksIfOwnerMatch</Directory>✓出处:站长百科这样,至少可以避免对DocumentRoot路径的多余的验证。
注意,如果Alias 或RewriteRule中含有 DocumentRoot以外的路径,那么同样需要增加这样的段。
为了得到最佳性能,应当放弃对符号连接的保护,在所有地方都设置 FollowSymLinks ,并放弃使用SymLinksIfOwnerMatch 。
AllowOverride如果网站空间允许覆盖(通常是用.htaccess文件),则Apache会试图对文件名的每一个组成部分都打开.htaccess ,例如:DocumentRoot /www/htdocs<Directory />AllowOverride all</Directory>如果请求"/index.html",则Apache会试图打开"/.htaccess"、"/www/.htaccess"、"/www /htdocs/.htaccess"。
其解决方法和前面所述的 Options FollowSymLinks 类似。
为了得到最佳性能,应当对文件系统中所有的地方都使用 AllowOverride None 。
内容协商实践中,内容协商的好处大于性能的损失,如果你很在意那一点点的性能损失,则可以禁止使用内容协商。
但是仍然有个方法可以提高服务器的速度,就是不要使用通配符,如:DirectoryIndex index而使用完整的列表,如:✓出处:站长百科DirectoryIndex index.cgi index.pl index.shtml index.html其中最常用的应该放在前面。
还有,建立一个明确的type-map文件在性能上优于使用"Options MultiViews",因为所有需要的信息都在一个单独的文件中,而无须搜索目录。
请参考内容协商文档以获得更详细的协商方法和创建type-map文件的指导。
内存映射在Apache2.0需要搜索被发送文件的内容时,比如处理服务器端包含时,如果操作系统支持某种形式的mmap() ,则会对此文件执行内存映射。
在某些平台上,内存映射可以提高性能,但是在某些情况下,内存映射会降低性能甚至影响到httpd的稳定性:在某些操作系统中,如果增加了CPU,mmap还不如read()迅速。
比如,在多处理器的Solaris服务器上,关闭了mmap ,Apache2.0传送服务端解析文件有时候反而更快。
如果你对作为NFS装载的文件系统中的一个文件进行了内存映射,而另一个NFS客户端的进程删除或者截断了这个文件,那么你的进程在下一次访问已经被映射的文件内容时,会产生一个总线错误。
如果有上述情况发生,则应该使用 EnableMMAP off 关闭对发送文件的内存映射。
注意:此指令可以被针对目录的设置覆盖。
✓出处:站长百科Sendfile在Apache2.0能够忽略将要被发送的文件的内容的时候(比如发送静态内容),如果操作系统支持sendfile() ,则Apache将使用内核提供的sendfile()来发送文件。
译者注:Linux2.4/2.6内核都支持。
在大多数平台上,使用sendfile可以通过免除分离的读和写操作来提升性能。
然而在某些情况下,使用sendfile会危害到httpd的稳定性一些平台可能会有Apache编译系统检测不到的有缺陷的sendfile支持,特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前对sendfile支持有缺陷的平台时。
对于一个挂载了NFS文件系统的内核,它可能无法可靠的通过自己的cache 服务于网络文件。