apache 内存占用问题

去圣西罗-为尤文喝彩 2014-09-29 06:45:21
apache 内存占用很大,有什么方法可以解决吗?php版本是5.5.3,Apache是2.2.14

ps -ylC httpd --sort:rss | awk '{sum+=$8; ++n} END {print "Tot="sum"("n")";print "Avg="sum"/"n"="sum/n/1024"MB"}'
Tot=2762932(35)
Avg=2762932/35=77.0907MB

才35个进程,每个要77MB,总共要2.6GB。

top命令查看
Tasks:  96 total,   9 running,  87 sleeping,   0 stopped,   0 zombie
Cpu(s): 82.1%us, 9.3%sy, 0.0%ni, 8.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4194304k total, 4194304k used, 0k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1852 mysql 15 0 5613m 1.1g 6336 S 63.2 27.7 57:31.20 mysqld
15508 apache 15 0 377m 91m 36m R 13.1 2.2 0:03.78 httpd
15608 root 16 0 266m 62m 9676 R 11.8 1.5 0:01.75 php
13955 apache 15 0 368m 86m 39m S 11.5 2.1 0:22.41 httpd
12051 apache 16 0 373m 94m 39m R 10.5 2.3 0:58.09 httpd
13947 apache 15 0 369m 91m 39m S 6.4 2.2 0:26.81 httpd
13967 apache 16 0 351m 72m 39m S 5.4 1.8 0:23.34 httpd
15517 apache 15 0 345m 62m 32m S 5.4 1.5 0:03.20 httpd
13527 apache 15 0 376m 96m 39m S 5.1 2.4 0:48.03 httpd
15620 root 15 0 218m 19m 8276 S 4.8 0.5 0:00.46 php
15457 apache 16 0 365m 82m 37m R 4.5 2.0 0:05.21 httpd
15514 apache 15 0 337m 54m 31m S 4.5 1.3 0:03.59 httpd
15518 apache 15 0 337m 48m 26m S 4.5 1.2 0:02.45 httpd
15461 apache 15 0 346m 64m 34m S 3.8 1.6 0:06.47 httpd
13944 apache 16 0 375m 94m 39m S 2.6 2.3 0:24.36 httpd
15456 apache 15 0 368m 84m 38m R 2.6 2.1 0:07.29 httpd
15365 apache 15 0 351m 71m 37m S 2.2 1.7 0:09.78 httpd


mysql用了1.1GB,别的都让httpd抢光了。

httpd.conf 设置如下,KeepAlive Off 和 On没什么区别

Timeout 45
KeepAlive Off
MaxKeepAliveRequests 256
KeepAliveTimeout 2

<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 20
ServerLimit 192
MaxClients 192
MaxRequestsPerChild 3000
</IfModule>


MaxClients设置的又是不大,而且php代码里,变量用完后都用$string=NULL; 来清空内存,function()里也在return后面一行添加$string=NULL; 还是没解决内存问题。

此外,测试了一些常用的php文件,重启Apache时脚本运行和满负荷内存时脚本运行相比,内存和运行时间都相差很大。即空闲时php内存只有满负荷时的40%,时间也差不多差40%。(memory_get_usage(true)/1024 )
...全文
492 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 12 楼 zy205817 的回复:
建议贴出apache日志看看,如果程序及时释放了变量, 占用内存应该不会很大,可以看看apache是否出现异样。
引用 12 楼 zy205817 的回复:
建议贴出apache日志看看,如果程序及时释放了变量, 占用内存应该不会很大,可以看看apache是否出现异样。
日志里只有许多类似于下面 [error] File does not exist: /var/www/html/en/article 很奇怪,明明 /var/www/html/en/ 文件夹下有 article.php文件。而且页面上的超链都检查过,没有错误。 RewriteRule ^en/article/(.*)/(\d+)/(.*)/(.*)?$ en/article/.php?search=$1&number=$2&keywords=$3&title=$4 [PT,QSA,L,NC] 是不是如果某篇文章在数据库里已被删除,跳转到404,日志就会产生上面的错误? 难道404也要吃内存?
码无边 2014-10-02
  • 打赏
  • 举报
回复
建议贴出apache日志看看,如果程序及时释放了变量, 占用内存应该不会很大,可以看看apache是否出现异样。
傲雪星枫 2014-10-01
  • 打赏
  • 举报
回复
引用 9 楼 changjay 的回复:
[quote=引用 8 楼 fdipzone 的回复:] 要看physical id 和 core id 才知道多少cpu與多少核。
cat /proc/cpuinfo | egrep "core id|physical id" physical id : 1 core id : 0 physical id : 0 core id : 0 physical id : 1 core id : 1 physical id : 0 core id : 1 physical id : 1 core id : 9 physical id : 0 core id : 9 physical id : 1 core id : 10 physical id : 0 core id : 10 这个和CPU有关吗? Cpu(s): 82.1%us,也不算满负荷的。[/quote] 不能只看cpu的。http://blog.chinaunix.net/uid-687654-id-2075858.html
  • 打赏
  • 举报
回复
对了,已经注释掉了一些不用的mod来减少Apache内存使用率,还可以进一步优化吗? LoadModule auth_basic_module modules/mod_auth_basic.so #LoadModule ssl_module modules/mod_ssl.so #LoadModule auth_digest_module modules/mod_auth_digest.so #LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_alias_module modules/mod_authn_alias.so #LoadModule authn_anon_module modules/mod_authn_anon.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_user_module modules/mod_authz_user.so #LoadModule authz_owner_module modules/mod_authz_owner.so #LoadModule authz_groupfile_module modules/mod_authz_groupfile.so #LoadModule authz_dbm_module modules/mod_authz_dbm.so LoadModule authz_default_module modules/mod_authz_default.so #LoadModule ldap_module modules/mod_ldap.so #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so #LoadModule include_module modules/mod_include.so LoadModule log_config_module modules/mod_log_config.so #LoadModule logio_module modules/mod_logio.so LoadModule env_module modules/mod_env.so #LoadModule ext_filter_module modules/mod_ext_filter.so #LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule expires_module modules/mod_expires.so LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so #LoadModule usertrack_module modules/mod_usertrack.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule mime_module modules/mod_mime.so #LoadModule dav_module modules/mod_dav.so #LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex.so #LoadModule info_module modules/mod_info.so #LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule vhost_alias_module modules/mod_vhost_alias.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so LoadModule actions_module modules/mod_actions.so #LoadModule speling_module modules/mod_speling.so #LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so #LoadModule substitute_module modules/mod_substitute.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule cache_module modules/mod_cache.so LoadModule suexec_module modules/mod_suexec.so LoadModule disk_cache_module modules/mod_disk_cache.so #LoadModule cgi_module modules/mod_cgi.so #LoadModule version_module modules/mod_version.so
  • 打赏
  • 举报
回复
引用 8 楼 fdipzone 的回复:
要看physical id 和 core id 才知道多少cpu與多少核。
cat /proc/cpuinfo | egrep "core id|physical id" physical id : 1 core id : 0 physical id : 0 core id : 0 physical id : 1 core id : 1 physical id : 0 core id : 1 physical id : 1 core id : 9 physical id : 0 core id : 9 physical id : 1 core id : 10 physical id : 0 core id : 10 这个和CPU有关吗? Cpu(s): 82.1%us,也不算满负荷的。
傲雪星枫 2014-09-30
  • 打赏
  • 举报
回复
08:34:28 up 7:43, 1 user, load average: 21.91, 21.96, 23.58 21.91 明顯負載過重了 load average <= cpu數量x核數x0.7 才是合理的 例如雙核cpu loadaverage應該<=1.4才對。 你的配置是什麼?
黄袍披身 2014-09-30
  • 打赏
  • 举报
回复
怎么可能啊 占用这么大内存。 另外你交换分区要分配给系统 2.4 配置文件是要重新弄的 但是相差不大。直接覆盖估计是不行的。 至于PHP版本升级 最好你查一下更新历史。一般不是什么很多年前的代码都应该没问题,你可以先在线下跑一下,就算有,也有替代方案的。
傲雪星枫 2014-09-30
  • 打赏
  • 举报
回复
要看physical id 和 core id 才知道多少cpu與多少核。
  • 打赏
  • 举报
回复
引用 4 楼 PhpNewnew 的回复:
怎么可能啊 占用这么大内存。 另外你交换分区要分配给系统 2.4 配置文件是要重新弄的 但是相差不大。直接覆盖估计是不行的。 至于PHP版本升级 最好你查一下更新历史。一般不是什么很多年前的代码都应该没问题,你可以先在线下跑一下,就算有,也有替代方案的。
服务商不给建立SWAP,怎么办,有没有其他方法优化?
  • 打赏
  • 举报
回复
引用 5 楼 fdipzone 的回复:
08:34:28 up 7:43, 1 user, load average: 21.91, 21.96, 23.58 21.91 明顯負載過重了 load average <= cpu數量x核數x0.7 才是合理的 例如雙核cpu loadaverage應該<=1.4才對。 你的配置是什麼?
grep "CPU" /proc/cpuinfo model name : Intel(R) Xeon(R) CPU L5609 @ 1.87GHz model name : Intel(R) Xeon(R) CPU L5609 @ 1.87GHz model name : Intel(R) Xeon(R) CPU L5609 @ 1.87GHz model name : Intel(R) Xeon(R) CPU L5609 @ 1.87GHz model name : Intel(R) Xeon(R) CPU L5609 @ 1.87GHz model name : Intel(R) Xeon(R) CPU L5609 @ 1.87GHz model name : Intel(R) Xeon(R) CPU L5609 @ 1.87GHz model name : Intel(R) Xeon(R) CPU L5609 @ 1.87GHz 另外 4GB RAM, 硬盘130GB,服务商不允许建立swap。
  • 打赏
  • 举报
回复
引用 2 楼 fdipzone 的回复:
建议安装apache 2.4以上。 load average大吗?
uptime 08:34:28 up 7:43, 1 user, load average: 21.91, 21.96, 23.58 弱弱的问一下,升级到apache 2.4,配置文件兼容吗?(httpd.conf, ssl.conf, etc...先备份,yum remove... yum install...把配置文件搬回去) 另外想升级php到最新版,但是不是 php 5.5.3 下 有些 function 在新版里已经摒弃? 谢谢。
傲雪星枫 2014-09-29
  • 打赏
  • 举报
回复
建议安装apache 2.4以上。 load average大吗?
xuzuning 2014-09-29
  • 打赏
  • 举报
回复
不大看得懂这个报告 不过 apache 出到 2.4.x 总是有他的道理的

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧