另请注意:

另请注意:

我正在开发一个用 PHP 编写的中型 Web 应用程序,该应用程序运行在具有 512MB RAM 的 VPS 上。该 Web 应用程序尚未正式启动,因此流量不大,只有我和其他几个人在开发它。

这台机器上还托管另一个稍微小一点的 Web 应用程序,以及其他 4-5 个小型静态站点。

我们正在运行 Centos 5 32 位和 cPanel/WHM。

这是运行的结果ps aux,如您所见,它没有使用 100% 的 RAM。然而,在 hypanel 概览中,它始终显示使用大约 500MB 的 RAM,仅用于运行 apache、mysql 以及内存占用最低的邮件服务器、ftp 服务器等版本。

-bash-3.2# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2156   664 ?        Ss   12:08   0:00 init [3]
root      1123  0.0  0.0   2260   548 ?        S<s  12:08   0:00 /sbin/udevd -d
root      1462  0.0  0.0   1812   568 ?        Ss   12:08   0:00 syslogd -m 0
named     1496  0.0  0.0   3808   820 ?        Ss   12:08   0:00 nsd
named     1497  0.0  0.0  10672   756 ?        S    12:08   0:00 nsd
named     1499  0.0  0.0   3880   584 ?        S    12:08   0:00 nsd
root      1514  0.0  0.1   7240  1064 ?        Ss   12:08   0:00 /usr/sbin/sshd
root      1522  0.0  0.0   2832   832 ?        Ss   12:08   0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root      1534  0.0  0.1   3712  1328 ?        S    12:08   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql -
mysql     1667  0.0  2.9 225680 30884 ?        Sl   12:08   0:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql -
mailnull  1766  0.0  0.1   9352  1100 ?        Ss   12:08   0:00 /usr/sbin/exim -bd -q60m
root      1797  0.0  0.0   2156   708 ?        Ss   12:08   0:00 /usr/sbin/dovecot
root      1798  0.0  0.0   2632  1012 ?        S    12:08   0:00 dovecot-auth
root      1816  0.0  3.0  38580 32456 ?        Ss   12:08   0:01 /usr/local/bin/spamd -d --allowed-ips=127.0.0.1 --pidfi
root      1839  0.0  1.6  63200 17496 ?        Ss   12:08   0:00 /usr/local/apache/bin/httpd -k start -DSSL
root      1846  0.0  0.1   5416  1468 ?        Ss   12:08   0:00 pure-ftpd (SERVER)
root      1848  0.0  0.1   6212  1244 ?        S    12:08   0:00 /usr/sbin/pure-authd -s /var/run/ftpd.sock -r /usr/sbin
root      1856  0.0  0.1   4492  1112 ?        Ss   12:08   0:00 crond
root      1864  0.0  0.0   2356   428 ?        Ss   12:08   0:00 /usr/sbin/atd
dovecot   1927  0.0  0.1   5196  1952 ?        S    12:08   0:00 pop3-login
dovecot   1928  0.0  0.1   5196  1948 ?        S    12:08   0:00 pop3-login
dovecot   1929  0.0  0.1   5316  2012 ?        S    12:08   0:00 imap-login
dovecot   1930  0.0  0.2   5416  2228 ?        S    12:08   0:00 imap-login
root      1939  0.0  0.1   3936  1964 ?        S    12:08   0:00 cPhulkd - processor
root      1963  0.0  0.8  15876  8564 ?        S    12:08   0:00 cpsrvd (SSL) - waiting for connections
root      1966  0.0  0.7  15172  7748 ?        S    12:08   0:00 cpdavd - accepting connections on 2077 and 2078
root      1990  0.0  0.2   5008  3136 ?        S    12:08   0:00 queueprocd - wait to process a task
root      2017  0.0  2.9  38580 31020 ?        S    12:08   0:00 spamd child
root      2018  0.0  0.5   8904  5636 ?        S    12:08   0:00 /usr/bin/perl /usr/local/cpanel/bin/leechprotect
nobody    2021  0.0  3.2  66512 33724 ?        S    12:08   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    2022  0.0  3.1  67812 33024 ?        S    12:08   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    2024  0.0  1.9  64364 20680 ?        S    12:08   0:00 /usr/local/apache/bin/httpd -k start -DSSL
root      2027  0.0  0.4   9000  4540 ?        S    12:08   0:00 tailwatchd
root      2032  0.0  0.1   4176  1836 ?        SN   12:08   0:00 cpanellogd - sleeping for logs
nobody    3096  0.0  1.9  64572 20264 ?        S    12:09   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    3097  0.0  2.8  66008 30136 ?        S    12:09   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    3098  0.0  2.8  65704 29752 ?        S    12:09   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    3099  0.0  3.1  67260 32816 ?        S    12:09   0:00 /usr/local/apache/bin/httpd -k start -DSSL
andrei    3448  0.0  0.1   3204  1632 ?        S    12:50   0:00 imap
nobody    3537  0.0  1.9  64308 20108 ?        S    13:01   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    3614  0.0  1.9  64576 20628 ?        S    13:10   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    3615  0.0  1.3  63200 14672 ?        S    13:10   0:00 /usr/local/apache/bin/httpd -k start -DSSL
root      3626  0.0  0.2  10232  2964 ?        Rs   13:14   0:00 sshd: root@pts/0
root      3648  0.0  0.1   3844  1600 pts/0    Ss   13:14   0:00 -bash
root      3826  0.0  0.0   2532   908 pts/0    R+   13:21   0:00 ps aux

最近,在未对配置进行任何重大更改的情况下,内存使用量开始达到峰值并超过 512,导致虚拟服务器杀死 apache,从而基本上在此过程中杀死我们的网站。

结果如下free -m

-bash-3.2# free -m
             total       used       free     shared    buffers     cached
Mem:          1024        381        642          0          0          0
-/+ buffers/cache:        381        642
Swap:            0          0          0

另请注意:

当内存使用量达到 400/512mb 时,Apache 似乎会被终止。以前从未发生过这种情况。这很奇怪。

您是否知道这是否正常并且应该获取更多资源?我不这么认为,因为目前在线数据或流量还不是太多。

编辑2:

[Sat Apr 07 18:04:21 2012] [notice] Graceful restart requested, doing restart
[Sat Apr 07 18:04:22 2012] [notice] seg fault or similar nasty error detected in the parent process
(after manual restart)
[Sat Apr 07 18:28:51 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/local/apache/bin/suexec)
etc.

这是 Apache 一次崩溃的日志。这让人很困惑。

答案1

free -m 显示应该有足够的可用 RAM。当某个进程由于可用 RAM 太少而被终止时,这称为“oom kill”,其中“oom”代表o乌特oF埃默里。

您甚至可以告诉 Linux 当这种情况发生时按什么顺序终止哪些进程。

除此之外,MySQL 在我们的系统上保留了大量的 RAM,这是正常的。您可以通过编辑 my.cnf 文件并调整 MySQL 配置文件的各种变量来减少该值。

此外,您还应该努力优化 Apache,以保持较低的 RAM 消耗。Apache 和 PHP 是否消耗大量 RAM 在很大程度上取决于您的 PHP 应用程序。

此外,您还应该创建一个 SWAP 文件,以便在内存已满时为您提供帮助。

答案2

apache 日志显示正常重启,这可能是由于日志轮换造成的:每天的时间都是同一时间吗?

然后重新启动会遇到段错误或类似问题,这可能是由于库不匹配造成的。PHP 是独立于 apache 安装的吗?这个问题是否仅在 cpanel 升级后才出现(可能升级了某个库)?

尝试停止并启动 apache:这个错误总是发生吗?如果禁用 php 或其他模块会怎样?

如果它与您首先询问的内存使用无关,您应该考虑将其作为一个新问题。

相关内容