`

解决Apache长时间占用内存大的问题,Apache 内存优化方法

 
阅读更多

问:为什么服务器在连续运行多天后或访问峰值后,进程中的一个Apache.exe占用内存几百兆不减少?
答:用记事本打开apache2\conf\httpd.conf,
我在centos5上装了kloxo,找了半天 httpd.conf在 /etc/httpd/conf/目录下。
查找MaxRequestsPerChild,将MaxRequestsPerChild 0改成MaxRequestsPerChild 50即可。
 影响apache性能的几个重要参数(conf/httpd.conf中设置)
KeepAlive 是否允许持续连接
MaxKeepAliveRequests 允许的持续连接的最大数
KeepAliveTimeout 持续连接在没有请求多少秒后切断
StartServers 最初启动时启动多少个服务器进程
MinSpareServers 空闲服务器进程的最小数
MaxSpareServers 空闲服务器进程的最大数
MaxClients 同时处理的请求数(最重要的参数,要少于ServerLimit)
MaxRequestsPerChild 每个子进程处理的最大请求数
它们之前的关系:
prefork 控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两 个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这种模式 可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。MaxSpareServers设置了最大的空闲进程数,如果空闲进程数大于这个 值,Apache会自动kill掉一些多余进程。这个值不要设得过大,但如果设的值比MinSpareServers小,Apache会自动把其调整为 MinSpareServers+1。如果站点负载较大,可考虑同时加大MinSpareServers和 MaxSpareServers。MaxRequestsPerChild设置的是每个子进程可处理的请求数。每个子进程在处理了 “MaxRequestsPerChild”个请求后将自动销毁。0意味着无限,即子进程永不销毁。虽然缺省设为0可以使每个子进程处理更多的请求,但如 果设成非零值也有两点重要的好处:1、可防止意外的内存泄漏。2、在服务器负载下降的时侯会自动减少子进程数。

  ServerLimit 2000
  StartServers 10
  MinSpareServers 10
  MaxSpareServers 15
  MaxClients 1000
  MaxRequestsPerChild 2048

调试过程中用到的指令:
# ps -ef|grep http|wc -l //查看请求总数
# cat /proc/loadavg //查看平均负载(loadavg),loadavg高于1,表明任务队列出现了等待,CPU忙不过来了。超过2以上就会明显感到性能降低了
# netstat -ant | grep :80 | wc -l //查看TCP连接数
# top //查看系统运行情况
====================================================================
apache的内存使用
apache进程在使用内存时,是“渐长”的。也就是说,直到这个进程死掉,使用内存的数量是一直增长而不会减少的。这样的话,apache进程使用内存的多少,就决定于你的应用程序最大使用内存量了。
keepalive参数
KeepAliveTimeout 这个参数决定了,在什么都不做之前,一个http进程能够等待多长时间?设想一下,如果keepalive设置为on,而 keepalivetimeout设置为一个比较大的数字,apache占用内存会很快的增长。这是因为,一个apache进程完成了一个任务(并达到了 一定的内存占用,想一下“渐进”模式),并不会马上退出,而是等待一个keepalivetimeout时间。假设用户的链接请求持续不断的到来,则积累 起来的无用的apache进程就会相当多,直到timeout,这些进程才会被杀死。
但是,keepalive的确对于静态的文件,比如图像文件的传送是很有效的,因此,keepalive要设置为on,(off)但是keepalvietimeout要设置的小些,比如5s 15
MaxRequestsPerChild
这个参数是说,apache进程在处理了多少个请求之后,必须退出,重新开始,以免在处理中的内存问题。
对于php脚本来说,把这个参数设置的小一些是有好处的,可以避免程序使用的内存持续增长对apache带来的压力:让这个参数定期释放内存,因为php是在脚本执行完毕后,自动释放只用的资源(内存)的。
比如设置为50?如果太小的话,重新产生一个apache进程也是要消耗资源的,这是一个平衡问题

分享到:
评论

相关推荐

    apache优化 网站优化

    1. **MaxKeepAliveRequests**:设置每个连接可以处理的最大请求数,防止资源被长时间占用。 2. **KeepAliveTimeout**:设置客户端无活动后多久关闭连接,减少服务器资源消耗。 3. **ServerLimit** 和 **MaxClients**...

    Apache优化全面详细教程

    ### Apache优化全面详细教程 #### 一、Apache服务器检测与优化 ##### 1. Zend Performance Suite介绍 **Zend Performance Suite** 是一款专为提升Apache服务器性能而设计的强大工具包。该套件通过优化服务器的...

    apache 参数优化

    设置得过短可能导致请求被错误地终止,过长则可能使服务器资源被长时间占用。通常,这应该比KeepAliveTimeout稍长一些。 9. **ScoreboardFile**:用于记录服务器状态的文件。优化时,可以考虑调整其大小和位置,以...

    服务器大量php-cgi.exe进程,导致CPU占用100%的解决[定义].pdf

    - `RequestTimeout`和`ActivityTimeout`:设置合理的超时时间,避免长时间运行的进程占用过多资源。 3. **减少进程数量**: - 调整程序配置文件中的`StartProcesses`值至较小数值,例如2,以减少`php-cgi.exe`...

    MySQL Tomcat Apache优化

    ### MySQL+Tomcat+Apache优化 #### 1. MySQL优化: ##### 1.1 简介: 在处理大量数据时,MySQL的优化至关重要。合理的内存分配不仅能提高系统的响应速度,还能有效避免因资源过度使用而导致的系统崩溃或性能下降...

    Apache配置优化总结

    但长时间的连接可能会占用过多资源,可调整`KeepAliveTimeout`来限制空闲连接的持续时间。 5. **LimitRequestFields和LimitRequestFieldSize**: 防止过大请求头导致的资源浪费,通过限制字段数量和大小,如设置`...

    25个Apache性能优化技巧推荐

    ### Apache性能优化技巧详解 #### 一、简介 在当今高度依赖互联网的世界中,Web服务器的性能至关重要。Apache作为全球最流行的Web服务器之一,其性能直接影响到网站的响应速度及用户体验。本文将详细介绍25个实用...

    rsync备份海量文件时占用大量内存的解决方法

    需要注意的是,rsync 3.x的发布间隔较长,从2.6.9到3.0.0之间相隔了很长时间,这期间用户需要寻找其他方式来处理大规模文件的备份需求。 总的来说,解决rsync备份大量文件时内存占用过高的问题,可以通过升级到3.x...

    apache可视化管理工具-ApacheConf

    7. **性能监控**:监控服务器的CPU使用率、内存占用、网络流量等关键指标,帮助优化服务器性能。 8. **错误检查**:在保存配置前自动检查语法错误,防止因配置错误导致的服务中断。 9. **备份恢复**:提供配置文件...

    关于内存一直增长的问题.docx

    在IT领域,内存管理是程序优化的关键环节,尤其是在处理大规模数据或者长时间运行的服务时。当遇到内存持续增长的问题,这通常意味着程序存在内存泄漏或过度消耗资源的现象。下面我们将深入探讨这个问题,分析可能的...

    org.apache.commons.dbcp.BasicDataSource的解决方法

    2. **空闲超时设置** - 使用`timeBetweenEvictionRunsMillis`和`minEvictableIdleTimeMillis`设置连接空闲检查和回收策略,避免长时间未使用的连接占用资源。 3. **验证测试** - 设置`testOnBorrow`和`testOnReturn`...

    重启apache进程脚本

    然而,在服务器长时间运行过程中,Apache 进程可能会出现问题,例如占用过高的系统资源、响应速度慢等问题。因此,对 Apache 进程的重启和维护是非常重要的。下面我们来详细分析这个重启 Apache 进程脚本。 首先,...

    eclipse启动tomcat内存泄漏解决

    但在某些特定情况下,如对象引用链未被正确处理或长时间持有不再使用的对象等,仍可能导致内存泄漏的发生。在Eclipse环境下启动Tomcat时,如果配置不当或者代码存在缺陷,也可能导致内存泄漏问题。 #### 三、...

    LAMP系统性能调优优化Apache和PHP.pdf

    1. **PHP配置优化**:调整php.ini文件中的参数,例如memory_limit以控制每个脚本的最大内存消耗,max_execution_time以限制脚本执行时间,避免长时间运行的请求占用资源。 2. **缓存机制**:启用PHP的OPcache或其他...

    apache and tomcat 优化

    这有助于避免长时间占用资源的情况发生,特别是对于HTTP GET请求或POST请求等长时间挂起的情况。 ##### 三、监听端口配置 通过修改`httpd.conf`文件中的`Listen`指令,可以指定Apache监听的端口号。例如: ```...

    Apache-2.4.27(64bit)

    2. **事件模型**:在2.4版本中,Apache支持了事件模型,提高了高并发场景下的性能,尤其是对于长时间保持连接的应用如WebSocket服务。 3. **更好的错误处理**:错误日志现在可以更精确地定位问题,便于开发者调试和...

    Tomcat性能优化及JVM内存工作原理

    【标题】:深入理解Tomcat性能优化与JVM内存工作原理 【正文】: Tomcat作为一款广泛应用的Java Servlet...同时,定期监控JVM的状态,如内存使用、垃圾回收频率等,可以帮助及时发现和解决问题,确保系统的稳定运行。

    memory analyzer 内存泄露

    - 检查持久化数据结构,如Session,确保它们的生命周期与应用或请求同步,防止长时间存活。 3. **JVM内存泄露检测**: - 分析JVM的内存配置,如堆大小、新生代和老年代的比例等,是否合适。如果频繁触发Full GC,...

    基于Apache Mina实现的TCP长连接和短连接实例

    长连接减少了建立和关闭连接的开销,但可能因长时间占用资源而产生问题,例如网络阻塞或资源泄露。 Apache Mina提供了一种灵活的方式来处理这两种连接方式。在Mina中,我们可以通过配置`SocketSession`来管理连接的...

Global site tag (gtag.js) - Google Analytics