救命!我的 Apache 进程在启动时全部使用了 115MB 内存。
相关信息:
Linux 版本 (uname -a)
Linux 2.6.31-14-generic-pae #48-Ubuntu SMP Fri Oct 16 15:22:42 UTC 2009 i686 GNU/Linux
Apache 版本(/usr/sbin/apache2 -v)
Server version: Apache/2.2.8 (Ubuntu)
Server built: Mar 9 2010 20:45:36
顶部显示(top -u www-data)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23377 www-data 20 0 115m 94m 3908 S 28 1.6 0:04.59 apache2
23375 www-data 20 0 119m 99m 5892 S 9 1.6 0:05.04 apache2
23324 www-data 20 0 116m 96m 5144 S 2 1.6 0:04.73 apache2
23283 www-data 20 0 115m 95m 4480 S 1 1.6 0:04.89 apache2
23259 www-data 20 0 116m 96m 5380 S 0 1.6 0:05.55 apache2
23370 www-data 20 0 115m 94m 4396 S 0 1.6 0:04.75 apache2
23229 www-data 20 0 116m 96m 6096 S 0 1.6 0:05.43 apache2
... and so on ...
内存映射(pmap $(pidof apache2))(实际上只是一个 apache2 进程)
大部分记忆是[匿名],见第 5 行
23324: /usr/sbin/apache2 -k start
08048000 332K r-x-- /usr/sbin/apache2
0809b000 8K rw--- /usr/sbin/apache2
0809d000 12K rw--- [ anon ]
093a0000 92812K rw--- [ anon ]
b5b6c000 4K rw--- [ anon ]
b5b6d000 512K rw-s- [ shmid=0x13528003 ]
b5fa8000 16K r-x-- /lib/tls/i686/cmov/libnss_dns-2.7.so
b5fac000 8K rw--- /lib/tls/i686/cmov/libnss_dns-2.7.so
b5fae000 120K r-x-- /usr/lib/php5/20060613+lfs/suhosin.so
b5fcc000 16K rw--- /usr/lib/php5/20060613+lfs/suhosin.so
b5fd0000 4K rw--- [ anon ]
b5fd1000 76K r-x-- /usr/lib/php5/20060613+lfs/pdo.so
b5fe4000 8K rw--- /usr/lib/php5/20060613+lfs/pdo.so
b5fe6000 92K r-x-- /usr/lib/php5/20060613+lfs/mysqli.so
b5ffd000 8K rw--- /usr/lib/php5/20060613+lfs/mysqli.so
b5fff000 1648K r-x-- /usr/lib/libmysqlclient.so.15.0.0
b619b000 268K rw--- /usr/lib/libmysqlclient.so.15.0.0
b61de000 4K rw--- [ anon ]
b61f0000 92K r-x-- /usr/lib/libxcb.so.1.0.0
b6207000 4K rw--- /usr/lib/libxcb.so.1.0.0
b6208000 164K r-x-- /usr/lib/libfontconfig.so.1.3.0
b6231000 4K rw--- /usr/lib/libfontconfig.so.1.3.0
b6232000 124K r-x-- /usr/lib/libjpeg.so.62.0.0
b6251000 4K rw--- /usr/lib/libjpeg.so.62.0.0
b6252000 136K r-x-- /usr/lib/libpng12.so.0.15.0
b6274000 4K rw--- /usr/lib/libpng12.so.0.15.0
b6275000 60K r-x-- /usr/lib/libXpm.so.4.11.0
b6284000 4K rw--- /usr/lib/libXpm.so.4.11.0
b6285000 912K r-x-- /usr/lib/libX11.so.6.2.0
b6369000 12K rw--- /usr/lib/libX11.so.6.2.0
b636c000 424K r-x-- /usr/lib/libfreetype.so.6.3.16
b63d6000 12K rw--- /usr/lib/libfreetype.so.6.3.16
b63d9000 236K r-x-- /usr/lib/libt1.so.5.1.1
b6414000 12K rw--- /usr/lib/libt1.so.5.1.1
b6417000 84K rw--- [ anon ]
b642c000 116K r-x-- /usr/lib/libgd.so.2.0.0
b6449000 128K rw--- /usr/lib/libgd.so.2.0.0
b6469000 16K rw--- [ anon ]
b646d000 88K r-x-- /usr/lib/php5/20060613+lfs/gd.so
b6483000 16K rw--- /usr/lib/php5/20060613+lfs/gd.so
b6487000 192K r-x-- /usr/lib/libidn.so.11.5.30
b64b7000 4K rw--- /usr/lib/libidn.so.11.5.30
b64b8000 232K r-x-- /usr/lib/libcurl.so.4.0.1
b64f2000 4K rw--- /usr/lib/libcurl.so.4.0.1
b64f8000 44K r-x-- /usr/lib/php5/20060613+lfs/mysql.so
b6503000 4K rw--- /usr/lib/php5/20060613+lfs/mysql.so
b6504000 268K r-x-- /usr/lib/libgmp.so.3.4.2
b6547000 4K rw--- /usr/lib/libgmp.so.3.4.2
b6548000 648K r-x-- /usr/lib/libclamav.so.5.0.4
b65ea000 44K rw--- /usr/lib/libclamav.so.5.0.4
b65f8000 52K r-x-- /usr/lib/php5/20060613+lfs/curl.so
b6605000 4K rw--- /usr/lib/php5/20060613+lfs/curl.so
b6606000 148K r-x-- /usr/lib/libmcrypt.so.4.4.7
b662b000 8K rw--- /usr/lib/libmcrypt.so.4.4.7
b662d000 28K rw--- [ anon ]
b6634000 24K r-x-- /usr/lib/php5/20060613+lfs/pdo_mysql.so
b663a000 4K rw--- /usr/lib/php5/20060613+lfs/pdo_mysql.so
b663b000 16K r-x-- /usr/lib/libXdmcp.so.6.0.0
b663f000 4K rw--- /usr/lib/libXdmcp.so.6.0.0
b6640000 12K r-x-- /usr/lib/php5/20060613+lfs/clamav.so
b6643000 4K rw--- /usr/lib/php5/20060613+lfs/clamav.so
b6644000 1036K r-x-- /usr/lib/libc-client.so.2007.0
b6747000 28K rw--- /usr/lib/libc-client.so.2007.0
b674e000 4K rw--- [ anon ]
b6750000 24K r-x-- /usr/lib/libltdl.so.3.1.6
b6756000 4K rw--- /usr/lib/libltdl.so.3.1.6
b6757000 32K r-x-- /usr/lib/php5/20060613+lfs/mcrypt.so
b675f000 4K rw--- /usr/lib/php5/20060613+lfs/mcrypt.so
b6760000 88K r-x-- /usr/lib/php5/20060613+lfs/imap.so
b6776000 4K rw--- /usr/lib/php5/20060613+lfs/imap.so
b6777000 104K r-x-- /usr/local/lib/libssh2.so
b6791000 4K rw--- /usr/local/lib/libssh2.so
b6792000 1324K r-x-- /usr/lib/ZendOptimizer.so
b68dd000 68K rw--- /usr/lib/ZendOptimizer.so
b68ee000 20K rw--- [ anon ]
b68f3000 8K r-x-- /usr/lib/libXau.so.6.0.0
b68f5000 4K rw--- /usr/lib/libXau.so.6.0.0
b68f6000 52K r-x-- /usr/lib/php5/20060613+lfs/ssh2.so
b6903000 4K rw--- /usr/lib/php5/20060613+lfs/ssh2.so
b6904000 252K r---- /usr/lib/locale/en_US.utf8/LC_CTYPE
b6974000 64K rw-s- /dev/zero (deleted)
b6984000 36K r-x-- /lib/tls/i686/cmov/libnss_files-2.7.so
b698d000 8K rw--- /lib/tls/i686/cmov/libnss_files-2.7.so
b698f000 32K r-x-- /lib/tls/i686/cmov/libnss_nis-2.7.so
b6997000 8K rw--- /lib/tls/i686/cmov/libnss_nis-2.7.so
b6999000 28K r-x-- /lib/tls/i686/cmov/libnss_compat-2.7.so
b69a0000 8K rw--- /lib/tls/i686/cmov/libnss_compat-2.7.so
b69a2000 36K r-x-- /lib/libpam.so.0.81.6
b69ab000 4K rw--- /lib/libpam.so.0.81.6
b69ac000 28K r--s- /usr/lib/gconv/gconv-modules.cache
b69b3000 8K r-x-- /usr/lib/apache2/modules/mod_userdir.so
b69b5000 4K rw--- /usr/lib/apache2/modules/mod_userdir.so
b69b6000 148K r-x-- /usr/lib/apache2/modules/mod_ssl.so
b69db000 8K rw--- /usr/lib/apache2/modules/mod_ssl.so
b69dd000 8K rw--- [ anon ]
b69df000 8K r-x-- /usr/lib/apache2/modules/mod_setenvif.so
b69e1000 4K rw--- /usr/lib/apache2/modules/mod_setenvif.so
b69e2000 1128K r-x-- /usr/lib/libxml2.so.2.6.31
b6afc000 20K rw--- /usr/lib/libxml2.so.2.6.31
b6b01000 4K rw--- [ anon ]
b6b02000 80K r-x-- /lib/tls/i686/cmov/libnsl-2.7.so
b6b16000 8K rw--- /lib/tls/i686/cmov/libnsl-2.7.so
b6b18000 8K rw--- [ anon ]
b6b1a000 140K r-x-- /lib/tls/i686/cmov/libm-2.7.so
b6b3d000 8K rw--- /lib/tls/i686/cmov/libm-2.7.so
b6b3f000 60K r-x-- /lib/libbz2.so.1.0.4
b6b4e000 4K rw--- /lib/libbz2.so.1.0.4
b6b4f000 4K r-x-- /usr/lib/libxcb-xlib.so.0.0.0
b6b50000 4K rw--- /usr/lib/libxcb-xlib.so.0.0.0
b6b51000 56K r-x-- /usr/lib/apache2/modules/mod_rewrite.so
b6b5f000 4K rw--- /usr/lib/apache2/modules/mod_rewrite.so
b6b60000 5060K r-x-- /usr/lib/apache2/modules/libphp5.so
b7051000 208K rw--- /usr/lib/apache2/modules/libphp5.so
b7085000 20K rw--- [ anon ]
b708a000 28K r-x-- /usr/lib/apache2/modules/mod_negotiation.so
b7091000 4K rw--- /usr/lib/apache2/modules/mod_negotiation.so
b7092000 12K r-x-- /usr/lib/apache2/modules/mod_mime.so
b7095000 4K rw--- /usr/lib/apache2/modules/mod_mime.so
b7096000 36K r-x-- /usr/lib/apache2/modules/mod_include.so
b709f000 4K rw--- /usr/lib/apache2/modules/mod_include.so
b70a0000 4K r-x-- /usr/lib/apache2/modules/mod_env.so
b70a1000 4K rw--- /usr/lib/apache2/modules/mod_env.so
b70a2000 4K r-x-- /usr/lib/apache2/modules/mod_dir.so
b70a3000 4K rw--- /usr/lib/apache2/modules/mod_dir.so
b70a4000 20K r-x-- /usr/lib/apache2/modules/mod_cgi.so
b70a9000 4K rw--- /usr/lib/apache2/modules/mod_cgi.so
b70aa000 28K r-x-- /usr/lib/apache2/modules/mod_autoindex.so
b70b1000 4K rw--- /usr/lib/apache2/modules/mod_autoindex.so
b70b2000 4K r-x-- /usr/lib/apache2/modules/mod_authz_user.so
b70b3000 4K rw--- /usr/lib/apache2/modules/mod_authz_user.so
b70b4000 8K r-x-- /usr/lib/apache2/modules/mod_authz_host.so
b70b6000 4K rw--- /usr/lib/apache2/modules/mod_authz_host.so
b70b7000 8K r-x-- /usr/lib/apache2/modules/mod_authz_groupfile.so
b70b9000 4K rw--- /usr/lib/apache2/modules/mod_authz_groupfile.so
b70ba000 8K rw--- [ anon ]
b70bc000 12K r-x-- /lib/libgpg-error.so.0.3.0
b70bf000 4K rw--- /lib/libgpg-error.so.0.3.0
b70c0000 4K rw--- [ anon ]
b70c1000 8K r-x-- /lib/libkeyutils-1.2.so
b70c3000 4K rw--- /lib/libkeyutils-1.2.so
b70c4000 28K r-x-- /usr/lib/libkrb5support.so.0.1
b70cb000 4K rw--- /usr/lib/libkrb5support.so.0.1
b70cc000 136K r-x-- /usr/lib/libk5crypto.so.3.1
b70ee000 4K rw--- /usr/lib/libk5crypto.so.3.1
b70ef000 300K r-x-- /lib/libgcrypt.so.11.2.3
b713a000 8K rw--- /lib/libgcrypt.so.11.2.3
b713c000 80K r-x-- /usr/lib/libz.so.1.2.3.3
b7150000 4K rw--- /usr/lib/libz.so.1.2.3.3
b7151000 4K rw--- [ anon ]
b7152000 60K r-x-- /usr/lib/libtasn1.so.3.0.12
b7161000 4K rw--- /usr/lib/libtasn1.so.3.0.12
b7162000 160K r-x-- /usr/lib/libgssapi_krb5.so.2.2
b718a000 4K rw--- /usr/lib/libgssapi_krb5.so.2.2
b718b000 8K r-x-- /lib/libcom_err.so.2.1
b718d000 4K rw--- /lib/libcom_err.so.2.1
b718e000 556K r-x-- /usr/lib/libkrb5.so.3.3
b7219000 8K rw--- /usr/lib/libkrb5.so.3.3
b721b000 1192K r-x-- /usr/lib/i686/cmov/libcrypto.so.0.9.8
b7345000 84K rw--- /usr/lib/i686/cmov/libcrypto.so.0.9.8
b735a000 16K rw--- [ anon ]
b735e000 248K r-x-- /usr/lib/i686/cmov/libssl.so.0.9.8
b739c000 16K rw--- /usr/lib/i686/cmov/libssl.so.0.9.8
b73a0000 452K r-x-- /usr/lib/libgnutls.so.13.9.1
b7411000 20K rw--- /usr/lib/libgnutls.so.13.9.1
b7416000 88K r-x-- /usr/lib/libsasl2.so.2.0.22
b742c000 4K rw--- /usr/lib/libsasl2.so.2.0.22
b742d000 60K r-x-- /lib/tls/i686/cmov/libresolv-2.7.so
b743c000 8K rw--- /lib/tls/i686/cmov/libresolv-2.7.so
b743e000 8K rw--- [ anon ]
b7440000 8K r-x-- /lib/tls/i686/cmov/libdl-2.7.so
b7442000 8K rw--- /lib/tls/i686/cmov/libdl-2.7.so
b7444000 36K r-x-- /lib/tls/i686/cmov/libcrypt-2.7.so
b744d000 8K rw--- /lib/tls/i686/cmov/libcrypt-2.7.so
b744f000 160K rw--- [ anon ]
b7477000 28K r-x-- /lib/tls/i686/cmov/librt-2.7.so
b747e000 8K rw--- /lib/tls/i686/cmov/librt-2.7.so
b7480000 12K r-x-- /lib/libuuid.so.1.2
b7483000 4K rw--- /lib/libuuid.so.1.2
b7484000 124K r-x-- /usr/lib/libexpat.so.1.5.2
b74a3000 8K rw--- /usr/lib/libexpat.so.1.5.2
b74a5000 396K r-x-- /usr/lib/libsqlite3.so.0.8.6
b7508000 8K rw--- /usr/lib/libsqlite3.so.0.8.6
b750a000 120K r-x-- /usr/lib/libpq.so.5.1
b7528000 4K rw--- /usr/lib/libpq.so.5.1
b7529000 1172K r-x-- /usr/lib/libdb-4.6.so
b764e000 8K rw--- /usr/lib/libdb-4.6.so
b7650000 4K rw--- [ anon ]
b7651000 48K r-x-- /usr/lib/liblber-2.4.so.2.0.5
b765d000 4K rw--- /usr/lib/liblber-2.4.so.2.0.5
b765e000 244K r-x-- /usr/lib/libldap_r-2.4.so.2.0.5
b769b000 4K rw--- /usr/lib/libldap_r-2.4.so.2.0.5
b769c000 8K rw--- [ anon ]
b769e000 1316K r-x-- /lib/tls/i686/cmov/libc-2.7.so
b77e7000 4K r---- /lib/tls/i686/cmov/libc-2.7.so
b77e8000 8K rw--- /lib/tls/i686/cmov/libc-2.7.so
b77ea000 12K rw--- [ anon ]
b77ed000 80K r-x-- /lib/tls/i686/cmov/libpthread-2.7.so
b7801000 8K rw--- /lib/tls/i686/cmov/libpthread-2.7.so
b7803000 8K rw--- [ anon ]
b7805000 136K r-x-- /usr/lib/libapr-1.so.0.2.11
b7827000 4K rw--- /usr/lib/libapr-1.so.0.2.11
b7828000 4K rw--- [ anon ]
b7829000 100K r-x-- /usr/lib/libaprutil-1.so.0.2.11
b7842000 4K rw--- /usr/lib/libaprutil-1.so.0.2.11
b7843000 152K r-x-- /usr/lib/libpcre.so.3.12.1
b7869000 4K rw--- /usr/lib/libpcre.so.3.12.1
b786a000 4K r-x-- /usr/lib/apache2/modules/mod_authz_default.so
b786b000 4K rw--- /usr/lib/apache2/modules/mod_authz_default.so
b786c000 4K r-x-- /usr/lib/apache2/modules/mod_authn_file.so
b786d000 4K rw--- /usr/lib/apache2/modules/mod_authn_file.so
b786e000 24K r-x-- /usr/lib/apache2/modules/mod_auth_digest.so
b7874000 4K rw--- /usr/lib/apache2/modules/mod_auth_digest.so
b7875000 8K r-x-- /usr/lib/apache2/modules/mod_auth_basic.so
b7877000 4K rw--- /usr/lib/apache2/modules/mod_auth_basic.so
b7878000 8K r-x-- /usr/lib/apache2/modules/mod_alias.so
b787a000 4K rw--- /usr/lib/apache2/modules/mod_alias.so
b787b000 8K rw--- [ anon ]
b787d000 4K r-x-- [ anon ]
b787e000 104K r-x-- /lib/ld-2.7.so
b7898000 8K rw--- /lib/ld-2.7.so
bfd68000 76K rwx-- [ stack ]
bfd7b000 8K rw--- [ anon ]
total 119008K
我不知道发生了什么。我尝试调整常用参数(MaxClients、MaxRequestsPerClient 等),但这些参数没有任何作用。还请注意,这是启动时的内存使用量 - 它不会增长,只是像这样开始,然后或多或少保持恒定。
有想法吗?
答案1
您有很多虚拟主机吗?您使用 mod_balance 吗?
我们有一个系统,其中 apache2 用作 mod_perl/apache13 后端的前端。Apache2 在每个连接上消耗了大量内存(30-40mb 非共享内存,我们很容易同时拥有 100 个连接)。事实证明,我们设置虚拟主机 + 负载平衡的方式在 apache2 系统中并不是真正最佳的:我们的 200 多个客户端中的每一个都在我们的 apache13 后端上分配了一个专用端口,前端使用基于名称的虚拟托管,并将负载平衡到 4 个后端节点之一,直接到“客户端端口”。每个客户端都需要自己的“平衡器”部分,位于 apache2 中自己的 vhost 部分之上。nginx 也需要单独的平衡器配置,但它似乎处理得更优化。我们将 apache2 的总内存从 500-600mb 减少到 40-50mb最高额对于 nginx。
Nginx 使我们不必大肆扩展硬件,我们从未后悔过。您可能要考虑在设置中使用 php-fcgi + nginx 或 lighttpd,您可能会看到更好的内存使用率数据。
答案2
您的 apache 配置会影响 apache2 进程的数量,但是,除非加载了太多模块,否则它不太可能导致内存使用率过高。您可以查看 /etc/apache2/mods-enabled/ 以查看加载了哪些内容,并删除不需要的内容。
由于 Ubuntu 基于 Debian,我假设安装的每个 php5-* 模块都会占用相当多的 RAM。
检查 /etc/php5/conf.d/ 并查看其中有哪些模块。您可能会在那里找到不需要的模块:
/etc/php5/conf.d:
curl.ini imap.ini memcached.ini mhash.ini mysql.ini pdo_mysql.ini
gd.ini mcrypt.ini memcache.ini mysqli.ini pdo.ini
你的内存使用情况并没有那么糟糕:
# ps aux|grep apache
www-data 1907 0.1 0.1 212372 13352 ? S 17:39 0:09 /usr/sbin/apache2 -k start
如果您不需要 pdo 或 imap,您可以禁用它们以减少内存使用量。