首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>网络管理>linux服务器>正文

Linux下Apache服务器的调试技巧

http://www.oklinux.cn  2009-02-02  Linux社区    会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

  Apache是运行在Linux操作系统上的头号Web服务器。很多小地方都可以用来调整Apache的性能,并降低它对系统资源的影响。其中一个就是调整内存使用率,当然达到这一目的可能还是需要花点功夫的。  

  例如,通过ps来确定httpd线程的内存使用率,可以输入下面的命令:

  # ps -U apache -u apache u

  USERPID %CPU %MEMVSZRSS TTYSTAT START TIME COMMAND

  apache130670.05.3 149704 54504 ?SOct071:53 /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -DAPACHE2  ...

  上面这段输出显示了单个httpd进程使用了50 MB的RSS(驻留集大小)内存(或者非交换物理内存),以及149 MB的VSZ(虚拟)内存。这当然在很大程度上取决于你在Apache里加载和运行的模块数量。这决不是一个固定的数字。由于这个数字里还包含了共享库包,所以不是100%的准确。我们可以认为RSS数字的一半是httpd线程真正使用的内存数,这可能还有点保守,但是离我们的目的已经非常接近了。  

  在本文里,我们假设每个httpd进程都在使用了27 MB内存。然后,你需要确定可以让httpd真正使用的内存数。根据运行在机器上的其他进程,你可能希望要求50%的物理内存都供Apache使用。在一个装有1GB内存的系统上,就有512MB的内存可以被划分为多个27MB的内存,也就是大约19个并发的httpd内存。有些人坚持认为每个httpd 线程“真正”使用大约5MB的内存,所以从理论上讲你可以把512MB的内存划分出102个并发进程供Apache使用(要记住的是,除非你的网站需要极其巨大的流量,否则这种情况是非常罕见的)。  

  在默认状态下,Apache会分配最大256个并发客户端连接,或者256个进程(每一个都对应一个请求)。按照这种设置,一个流量巨大的网站会在顷刻间崩溃(即使你假设每个进程占用5MB内存,那也需要1.3GB的内存来满足请求的数量)。如果不采取其它措施,系统会通过硬盘来尝试使用交换空间以处理它无法在物理内存中完成的任务。

  其他可以调整的项目包括KeepAlive、KeepAliveTimeout和MaxKeepAliveRequests等设置。可以放在httpd.conf文件里的推荐设置有: 

  ServerLimit 128MaxClients 128KeepAlive OnKeepAliveTimeout 2MaxKeepAliveRequests 100

  通过将KeepAliveTimeout从15秒减到2秒,可以增加MaxClients命令;19太小,而128要好得多。通过减少进程存活的秒数,你可以在相同的时间内允许更多的连接。  

  当然,如果没有真正的测试在背后支持,数字就是毫无意义的,这就是ab的作用之所在。使用ab对Apache配置文件(MaxClients等于 256、ServerLimit等于256、KeepAliveTimeout等于15)进行调整,使其能够满足1000个请求(100个连续请求并发产生)的调整方法如下。(在执行测试的时候要确保服务器上有一个终端打开以观察系统的负载。)

  $ ab -n 1000 -c 100 -k www.britepic.org

  现在把上面的服务器设置改为更加保守的设置,重新启动Apache,试着再次测试(总是从远程计算机上进行,而不是本机)。

  在这里的测试中,不同的设置导致执行所消耗的时间产生了一倍的差距(分别为27.8s和16.8s),但是负载的平均值为0.03和0.30。这可能会使得你的网站变得稍慢,但是会确保它不会在高负载的情况下崩溃。还要记住的是,你将需要进行多次测试,以便取得一个平均值。

  使用ab是测试调整Apache配置的一个极佳方法,应该在你每次做出影响性能的更改时使用它。


上一篇:Linux 如何指定 DNS Server   下一篇:RedHat Enterprise 5下YUM服务器搭建(RHCI必备)

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux 如何指定 DNS Server
·RedHat Enterprise 5下YUM服务器搭建(RHCI必备)
·RHEL 5.2下SendMail dovecot邮件系统配置教程
·Linux环境下php加载mbstring办法
·RHEL 5.2下vsftp配置全教程
·Linux配置UPnP服务
·Ubuntu 8.10 Server 安装步骤及 web 服务配置
·在RHEL 5下通过Bind实现DNS功能
·安装和配置企业级 Web 服务器
·Linux服务器:设计高性能网站架构-LLMP
·Ubuntu下安装NetBeans 6.5时中文变成方块的解决办法
·Linux下jdmail邮件系统安装完成后的设置与启用
·在Linux下如何检查邮件系统已经安装成功
·金笛邮件服务器在Linux下的安装步骤
·Linux下Apache Sendmail Openwebmail配置详解
·在Linux下安装Web程序同样简单,一条命令搞定
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·RedHat Enterprise 5下YUM服务器搭建(R
·Linux 如何指定 DNS Server
·RHEL 5.2下SendMail dovecot邮件系统配
·Linux环境下php加载mbstring办法
·RHEL 5.2下vsftp配置全教程
·Linux配置UPnP服务
·Ubuntu 8.10 Server 安装步骤及 web 服
·在RHEL 5下通过Bind实现DNS功能
·安装和配置企业级 Web 服务器
·Linux服务器:设计高性能网站架构-LLMP
·Ubuntu下安装NetBeans 6.5时中文变成方
·Linux下jdmail邮件系统安装完成后的设
  阅读排行
·详解远程SHELL下安装配置RedHat ES 5的
·Linux系统下架设APACHE SVN服务器全过
·安装大型Linux集群(4):节点安装和 GPFS
·LVS集群学习笔记(NAT\DR\IP tunnel)
·Linux 下配置vsftp虚拟用户总结
·Linux服务器存储空间巧妙管理
·Linux下用vsftp轻松搭建FTP服务器(修订
·安装大型Linux集群(1): 简介和硬件配置
·Ubuntu下安装tftp服务器的步骤
·RedHat Linux AS4 LAMP经典网站搭建实
·安装大型Linux集群(2):配置管理服务器
·安装大型Linux集群(3):存储和共享文件
·Linux与Linux,Linux与Windows之间使用S
·linux下文件服务Vsftp详细介绍
·Xen和虚拟化技术学习指南
网摘收藏: