linux apache服务器优化建议整理(很实用)_第1页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linux apache服务器优化建议整理(很实用)apache服务器的_wait过多 fin_wait1过多等问题2009-01-16 16:591。time_wait状态过多。 通常表现为apache服务器负载高,显示load average可能上百,但是web服务基本没有问题。同时ssh能够登陆,但是反应十分迟钝。 缘由:最可能的缘由是.conf里面keepalive没有开,导致每次哀求都要建立新的t衔接,哀求完成以后关闭,增强了无数 time_wait的状态。另,keepalive可能会增强一部分内存的开销,但是问题不大。也有一些文章研究到了sysctl里面一些参数的设置可以充实这个问

2、题,但是这就本末倒置了。 2。fin_wait1状态过多。fin_wait1状态是在server端主动要求关闭tcp衔接,并且主动发送fin以后,等待 client端回复ack时候的状态。fin_wait1的产生缘由有无数,需要结合quo;print awk $nf | -c|sort -n 上面的指令可以协助分析哪种tcp状态数量异样 netstat -nat| :80 |awk print $5 |awk -f: print $1 | sort| uniq -c|sort -n 则可以协助你将哀求80服务的client ip根据衔接数排序。 回到fin_wait1这个话题,假如发觉fin_

3、wait1状态无数,并且client ip分布正常,那可能是有人用肉鸡举行os袭击、又或者最近的程序改动引起了问题。普通说来后者可能性更大,应当主动联系程序员解决。 但是假如有某个ip衔接数十分多,就值得注重了,可以考虑用iptables挺直封了他。 apache如何限制用户线程数?2009-01-15 13:37限制客户端一个ip同时衔接数,实际应用:限制flashget,网络蚂蚁等软件惟独2个进程有效 apache如何限制用户线程数? 限制客户端一个ip同时衔接数,实际应用:限制flashget,网络蚂蚁等软件惟独2个进程有效。 (注释:/opt/httpd/是我的apache的安装名目,

4、大家可以自行改成自己的路径) 首先,从/djao/下载mod_limitipconn-0.22.tar.gz 上传后运行 /opt/httpd/bin/apxs -c -i -a mod_limitipconn.c 将此外部dso模块编译入apache 检查/opt/httpd/moles是否有mod_limitipconn.so模块 配置apache配置文件,找到相应位置,如下: loadmodule limitipconn_module modules/mod_limitipconn.so maxconnperip 2 并将extendstatus on的

5、注释去掉 重启apache,检查是否可限制单一ip多个并发衔接 测试效果,用flashget下载,默认是5个蚂蚁,惟独2个可以衔接并举行下载,其他的3个始终衔接不上!胜利! apache性能优化2009-01-15 13:32tunning apache apache几目前internet上用法最为广泛的web服务器。它具有比商业web服务器不遑多让的功能与速度,同时安装与设置也非常容易,正是这些特性让它成为市场占有率最高的web服务器软件。不过apache安装容易,并不意味着容易地安装就可以适用于绝大多数应用环境,在高负荷的 web站点,apache还需要举行调节、优化 优化办法 apach

6、e的配置文件是httpd.conf。windows下该文件位于apache安装名目的conf子名目下,redhat enterprise linux as 3.0 up 2位于/etc/httpd/conf。通过调节该文件的某些参数,可以优化apache的运行效率。 为了验证后文apache参数的调节是否起作用,我们通常用apache附带的ab(apache beh)对其举行压力测试。 ab最常用的语法格式是这样的: ab -n xxx -c yyy -k http:/hostname.port/path/name 其中: -n xxx: 表示最多举行xxx次测试。也就是下载filename文

7、件xxx次。 -c yyy: 客户端并发衔接个数。 -k: 启用http keepalive功能。默认不启用keepalive功能。 比如我们要对http:/hostname:port/下载10000次举行测试,并发拜访为60个,启用http keepalive功能,则拜访命令为: ab -n 10000 -c 60 -k http:/hostname:port/file.htm 测试平台 在本次优化过程中。笔者采纳了两台电脑举行压力测试。其中一台为客户端,运行ab发送哀求,另外一台为服务器,安装有apache提供web服务。 1.服务器配置 服务器端,笔者采纳了较低端的配置。这样更简单通过a

8、b测试看来调节参数后的效果: cpu: intel celeron 1.0ghz 内存: 512mb sram 100mhz 硬盘: maxtor 4d040h2 网卡: d-link dfe 530tx 服务器端笔者安装两种操作系统:windows server 2003 enterprise edition并升级到最新的hotfix。apache服务器版本为2.0.50;或者redhat enterprise linux as 3.0 update 2。 2.客户端配置 为了使评测的瓶颈不在客户端,笔者客户端配置要比服务器端好,详细硬件配置如下: cpu: p4 3.0ghz 533mhz

9、 打开了ht支持 内存: 512mb ddr 400 硬盘: wd1200jb-00cra1 网卡: d-link dfe 530tx 客户端安装有redhat enterprise linux as 3.0 update 2。并利用其中的ab来举行性能测试。 通用优化技巧 对于apache服务器来说,为了提高性能需要举行的某些参数调节具有通用性,也就是说只要采纳了就可以使其性能更好。 1.关闭dns和名字解析 * hostnamelookups on | off | double apache 1.3之前hostnamelookups默认是打开的。这样客户端在拜访服务器时,服务器将要解析客户

10、端的主机名,并将其保存在日志文件中。对客户端举行域名反向解析会大幅降低服务器速度,所以最好将其设置为off。关闭命令如下: hostnamelookups off * usecanonicalname on | off | dns 打开usecanonicalname是web服务器的标准做法。这是由于客户发送的大部分哀求都是对本服务器的引用,打开该项设置就能用法 servername和port选项的设置内容构建完整的url。假如将这个参数设置为off,那么apache将用法从客户哀求中获得服务器名字和端口值,重新构建url。 假如你不需要在apache中架设虚拟主机,建议设置为: usecan

11、onicalname on 2.关闭多余模块 apache采纳了模块化设计,管理员可以有挑选地加载一些模块来加强服务器的功能。这些模块,可以在创建服务器时静态编译到服务器的二进制代码中,也可以编译成一些自立服务器程序的dynamic shared objects(dso)文件,在apache启动的时候按照需要,动态加载。事实证实,不加载多余的模块总是可以提高apache的性能。 apache的dso模块是在httpd.conf中以: loadmodule access_module modules/mod_access.so 方式加载。当不需要某个模块时,只要在其前添加 ,注释掉该行。 普通来

12、说,不需要加载以下模块: mod_include.so: 服务器端包含,是一种已经过时的技术。 mod_autoind.so: 假如不希翼apache列名目显示,可以删除。 mod_access.so、mod_auth.so: 假如你不需要举行平安验证,也没有须要加载。 最好加载以下模块: mod_dir.so: 用于定义缺省文档index.、index.jsp等。 mod_log_config.so: 用于定义记录文件格式。 mod_mime.so: 定义的关联。 最后需要解释一点的是,并不是加载全部的模块都会降低apache性能。比如mod_可以把文件之后再传给客户端,这样就可以削减 40

13、%左右的网络流量,而mod_expires则可以削减10%左右的重复哀求。 3.取消.htaccess验证 除非你确定需要用法.htaccess文件来控制客户端对相应名目的拜访权限,否则设置 allowoverre none ,可以免除apache在每个名目搜寻.htaccess文件之苦。 4.取消符号链接 followsymlinks允许用法符号衔接,这将用法扫瞄器有可能拜访文档根名目(documentroot)之外的内容,并且惟独符号衔接的目的与符号衔接本身为同一用户所拥有时(symlinksownermatch),才允许拜访,这个设置将增强一些平安性,但将耗费apache大量的资源。 笔

14、者建议: options followsymlinks 但是不要启用symlinksownermatch。 5.打开keepalive支持 在http 1.0中和apache服务器的一次衔接只能发出一次http哀求,而keepalive参数支持http 1.1版本的一次衔接,多次传输功能,这样就可以在一次衔接中发出多个http哀求。从而避开对于同一个客户端需要打开不同的衔接。无数哀求通过同一个 tcp衔接来发送,可以节省网络和系统资源。 在apache的配置文件httpd.conf中,设置: keepalive on keepalivetimeout 15 这样就能限制每个衔接的保持时光是15

15、秒。在我们的评测中发觉,打开keepalive之前,ab测试的数据为: requests per second: 201.32 /sec (mean) time per request: 298.031 ms (mean) time per request: 4.967 ms (mean, across all concurrent requests) transfer rate: 839.49 kbytes/sec received 而打开keepalive支持之后,ab测试数据为: requests per second: 341.70 /sec (mean) time per reque

16、st: 175.594 ms (mean) time per request: 2.927 ms (mean, across all concurrent requests) transfer rate: 1437.04 kbytes/sec received 最能反应apache服务器性能的requests per second,即每秒完成的哀求次数从201.32提升到341.70,提升幅度为70%。虽然在现实环境中,不行能有这么多的同一衔接发出的哀求,但启用keepalive的确在一定程度上可以提高apache服务器的吞吐量和反应速度。 另外,可以设置: maxkeepalivereque

17、sts 100 把maxkeepaliverequests设置的尽量大,可以在一次衔接中举行更多的http哀求。但在我们的测试中还发觉,把 maxkeepaliverequests设置成1000,则评测的客户端简单浮现 send requesttimed out 的错误,所以详细数值还要按照自己的情形来设置。 参数打算性能 apache除了可以通过一些常规方式举行优化外,还需要调节其运行参数,这样才干构建一个适合相应网络环境的web服务。这些命令从两个级别对apache举行了优化。 * 进程级(process-level) 进程级的参数用来控制apache相应的客户端哀求的进程数process

18、(在windows下称之为线程数,threads)。 * 协议级(proto-level) 协议级的命令则用来控制apache与客户端的衔接多久才自动断开。 因为windows和linux/unix设计原理的不同,所以进程级的命令按照apache是工作在linux/unix或者windows 下,而分成两种。 1.linux下apache性能优化 linux下的apache预设工作在prefork模式下(由每个进程处理衔接哀求),这种工作模式也是apache 1.3系列的工作模式。假如你需要其工作在其他模式下,则需要手工编译源代码来实现: ./configure prefix=/usr/loc

19、al/apache-2.0.50 with-mpm=worker -include make make install linux下进程级的apache调节参数包括以下五个。 * startservers 该参数打算linux启动时,自动打开的apache服务器的数目。它对apache服务器的性能没有太大的影响。由于假如 minspareservers设置的比较大,apache服务器进程数会马上调节到不小于minspareservers的数目。 在linux下,我们可以通过: ps aux |grep httpd 来查看当前打开的apache服务进程数。 * minspareservers 该

20、参数用于配置在任何时候可用的最小apache进程个数。普通状况下,当目前可用的apache进程数不能满足需求时,apache会自动打开新进程以服务客户。所以设置minspareservers为较大的值只是为了让在比较繁忙的web环境,让apache可以尽快地满足客户端的拜访需求。对于天天有百万拜访量的网站来说,下面的数值是比较合适的: minspareservers 32 * maxspareservers 较大的minspareservers可以保证apache有较快的反应速度,过大的minspareservers又会占用更多的系统内存。假如你的系统内存不是很充沛或者运行有其他的服务,把ma

21、xspareservers设置小一些可以为其他服务空出一些内存。当空闲apache进程超过 maxspareservers指定的数值时,apache主进程会杀掉多余的空闲进程而保持空闲进程在maxspareservers指定的数值。 对于天天百万拜访量的网站来说,配置大容量的内容,并且设置如下的值是比较合适的: maxspareservers 64 * maxclients 服务器的处理能力究竟是有限的,不行能同时处理无限多的衔接哀求。参数maxclients就用于规定服务器支持的最多并发拜访的客户数。 假如maxclients设置得过大,系统在繁忙时不得不在过多的进程之间往返切换为更多的客户

22、服务。这样对每个客户的反应就会变慢;假如设置得过小,系统繁忙时就会否决客户衔接哀求。 我们的设想原则是,当服务器性能较高时,可以适当增强这个值的设置。假如繁忙浮现否决拜访现象,解释需要升级服务器硬件了。 假如你不在意拜访速度,或者认为反应速度慢也总比否决衔接好,可以把该值设置大一些。 * maxrequestsperchild 当设置keepalive为off时,apache服务器是用单独的子进程为一次衔接服务,这样,每次衔接都需要生成、关闭子进程,这些额外的操作铺张了计算机的大量处理能力。最好的方式是一个子进程可以为多次衔接哀求服务。 但子进程在接受拜访哀求时,需要不断地申请和释放内存,次数

23、多了就会造成内存垃圾,影响系统稳定性。为了解决这个问题,可以规定每一个子进程处理的最大哀求数,超过此数值,就让该子进程退出,再从原始的httpd进程中重新复制一个整洁的副本,从而提高系统的稳定性。 第个子进程能够处理服务哀求的最大次数由maxrequestsperchild定义。redhat enterprise linux as 3.0 update 2缺省的设置值为1000这个值比较适合(设置为0支持每个副本举行无限次的服务处理)。 在我们的测试过程中发觉,redhat enterprise linux as 3.0 update 2下默认配置的apache并不能很好地对付大负荷站点。我们

24、需要打开keepalive,并加大startservers、 minspareservers、maxspareservers和maxclients的数值。这些参数对于apache性能的充实有很大的影响。 小学问: redhat enterprise linux as 3.0 update 2最大maxclients只能设置到256。假如你需要设置其为更高,需要在maxclients前面添加: serverlimit xxx 其中xxx不能少于maxclients的数值。该设置办法适用于apache 2.0系列。 2.windows下apache优化 windows下,apache 2.0经过了

25、全新的设计,采纳多线程的方式(work)运行。这种运行方式,理论上比linux/unix的perfork运行模式有更好的性能。 work模式下由单个控制进程负责子进程的建立。每个子进程可以建立由threadsperchild指定的固定数量的线程。由自立的线程监听并处理到来的衔接。 在windows下可以执行 apache -l 。查看当前工作模式,假如显示 mpm_winnt.c ,则表示apache工作在多线程模式下;在linux下执行 httpd -l 看到 prefork.c 表示工作在子进程模式下。 其配置语句是: startservers 2 maxclients 150 minsp

26、arethreads 25 maxsparethreads 75 threadsperchild 25 maxrequestsperchild 0 apache力图维持一个备用的服务线程池,让客户端无须等待线程/进程的建立刻可得处处理。最初建立的进程数由 startservers指定。然后apache会不停地检测全部apache进程中空闲线程的总数,并新建或结束进程使总数维持在 minsparethreads和maxsparethreads所指定的范围以内。但同时可以得处处理的客户端的最大数量又取决于maxclients 命令,而进程建立的最大数量取决于serverlimit命令。三者之间的关

27、系为: serverlimit*threadsperchild =maxclients 详细参数和优化办法这里因为篇幅所限,不再详细介绍。有爱好的伴侣可以参考前文介绍的linux下的优化举行。 apache服务器的优化-模式设置2009-01-15 12:08服务器的优化 (mpm: multi-processing modules) apache2主要的优势就是对多处理器的支持更好,在编译时同过用法 with-mpm选项来打算apache2的工作模式。假如知道当前的apache2用法什么工作机制,可以通过httpd -l指令列出apache的全部模块,就可以知道其工作方式: prefork:

28、 假如httpd -l列出prefork.c,则需要对下面的段举行配置: startservers 5 启动apache时启动的httpd进程个数。 minspareservers 5 服务器保持的最小空闲进程数。 maxspareservers 10 服务器保持的最大空闲进程数。 maxclients 150 最大并发衔接数。 maxrequestsperchild 1000 每个子进程被哀求服务多少次后被掉。0表示不限制,推举设置为1000。 在该工作模式下,服务器启动后起动5个httpd进程(加父进程共6个,通过ps -ax|grep httpd指令可以看到)。当实用户衔接时,apach

29、e会用法一个空闲进程为该衔接服务,同时父进程会fork一个子进程。直到内存中的空闲进程达到 maxspareservers。该模式是为了兼容一些旧版本的程序。我缺省编译时的选项。 worker: 假如httpd -l列出worker.c,则需要对下面的段举行配置: startservers 2 启动apache时启动的httpd进程个数。 maxclients 150 最大并发衔接数。 minsparethreads 25 服务器保持的最小空闲线程数。 maxsparethreads 75 服务器保持的最大空闲线程数。 threadsperchild 25 每个子进程的产生的线程数。 maxr

30、equestsperchild 0 每个子进程被哀求服务多少次后被kill掉。0表示不限制,推举设置为1000。 该模式是由线程来监听客户的衔接。当有新客户衔接时,由其中的一个空闲线程接受衔接。服务器在启动时启动两个进程,每个进程产生的线程数是固定的(threadsperchild打算),因此启动时有50个线程。当50个线程不够用时,服务器自动fork一个进程,再产生25个线程。 perchild: 假如httpd -l列出perchild.c,则需要对下面的段举行配置: numservers 5 服务器启动时启动的子进程数 startthreads 5 每个子进程启动时启动的线程数 mins

31、parethreads 5 内存中的最小空闲线程数 maxsparethreads 10 最大空闲线程数 maxthreadsperchild 2000 每个线程最多被哀求多少次后退出。0不受限制 maxrequestsperchild 10000 每个子进程服务多少次后被重新fork。0表示不受限制。 该模式下,子进程的数量是固定的,线程数不受限制。当客户端衔接到服务器时,又空闲的线程提供服务。 假如空闲线程数不够,子进程自动产生线程来为新的衔接服务。该模式用于多站点服务器。 apache的prefork模式和worker 模式2009-01-15 11:48apache的prefork模式

32、和worker模式 prefork模式 这个多路处理模块(mpm)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于apache 1.3。它适合于没有线程平安库,需要避开线程兼容性问题的系统。它是要求将每个哀求互相自立的状况下最好的mpm,这样若一个哀求浮现问题就不会影响到其他哀求。 这个mpm具有很强的自我调整能力,只需要很少的配置命令调节。最重要的是将maxclients设置为一个足够大的数值以处理潜在的哀求高峰,同时又不能太大,以致需要用法的内存超出物理内存的大小。 worker模式 此多路处理模块(mpm)使网络服务器支持混合的多线程多进程。因为用法线程来处理哀求,所以可以

33、处理海量哀求,而系统资源的开销小于基于进程的mpm。但是,它也用法了多进程,每个进程又有多个线程,以获得基于进程的mpm的稳定性。 控制这个mpm的最重要的命令是,控制每个子进程允许建立的线程数的threadsperchild命令,和控制允许建立的总线程数的 maxclients命令。 prefork和worker模式的切换 1.将当前的prefork模式启动文件改名 httpd httpd.prefork 2.将worker模式的启动文件改名 mv httpd.worker httpd 3.修改 apache配置文件 vi /usr/local/apache2/conf/exa/httpd-

34、mpm.conf 找到里边的如下一段,可适当修改负载等参数: ifmodule mpm_worker_module startservers 2 maxclients 150 minsparethreads 25 maxsparethreads 75 threadsperchild 25 maxrequestsperchild 0 /ifmodule 4.重新启动服务 /usr/local/apache2/bin/ restart 即可换成worker方式启动apache2 处于稳定性和平安性考虑,不建议更换apache2的运行方式,用法系统默认prefork即可。另外无数php模块不能工作在worker模

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论