调整 Apache 内存使用情况

调整 Apache 内存使用情况

我一直在检查我的网络服务器,但遇到了一些问题。首先,使用 top 时,我注意到 Apache 占用了大量内存,其实这并不奇怪,但即使对于 Apache 来说,每个进程 130-150M 似乎也很高。我正在运行 2.2 worker MPM,使用 mod_fcgid 进行 php。我以为采用这种方式可以降低内存消耗,但当我从 Prefork 和 mod_php 切换时,似乎并没有太大变化。我在这里遗漏了什么?我读到过,经过良好调整的 Apache 每个进程应该使用接近 15-25MB 的内存。我错了吗?

下面是使用我的 apache 版本编译的模块列表:

以模块形式编译:

  core.c
  mod_authn_file.c
  mod_authn_default.c
  mod_authz_host.c
  mod_authz_groupfile.c
  mod_authz_user.c
  mod_authz_default.c
  mod_auth_basic.c
  mod_cache.c
  mod_mem_cache.c
  mod_include.c
  mod_filter.c
  mod_deflate.c
  mod_log_config.c
  mod_logio.c
  mod_env.c
  mod_expires.c
  mod_headers.c
  mod_unique_id.c
  mod_setenvif.c
  mod_version.c
  mod_proxy.c
  mod_proxy_connect.c
  mod_proxy_ftp.c
  mod_proxy_http.c
  mod_proxy_scgi.c
  mod_proxy_ajp.c
  mod_proxy_balancer.c
  mod_ssl.c
  worker.c
  http_core.c
  mod_mime.c
  mod_status.c
  mod_autoindex.c
  mod_asis.c
  mod_info.c
  mod_suexec.c
  mod_cgid.c
  mod_negotiation.c
  mod_dir.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_rewrite.c
  mod_so.c

其中是否有特别大且可以省略的。我使用服务器上的简单 Apache 设置构建了一个通用版本。我猜那里有多余的东西需要修剪。

我还有一个问题:进程之间是否有共享内存?每个进程使用超过 130MB 的内存似乎有点可疑。有没有办法限制使用的内存量?缓存设置?

答案1

这是虚拟的内存,而不是物理内存。虚拟内存通常不被视为稀缺资源。尝试减少 Apache 对虚拟内存的消耗将是浪费时间。如果您没有实际问题和实际症状,则没有什么可解决的。

答案2

Apache 有一些关于此的文档,但它位于一个奇怪的地方。

http://wiki.apache.org/httpd/DoS,这解释了您所看到的一些内容:

请注意,ps(1) 和 top(1) 等工具报告的内存使用情况包括共享内存,因此它们报告的明显数字远高于 apache 的实际每个进程使用情况。

因此,您的“高内存”问题有点像假象。

相关内容