什么东西消耗了这么多内存?

什么东西消耗了这么多内存?

我的服务器出现了一些问题。它时不时地出现错误,而且运行速度很慢。以下是 top 的输出:

top - 07:33:33 up 18:57,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  90 total,   1 running,  82 sleeping,   7 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1048576k total,  1048576k used,        0k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

按%MEM排序:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 9597 root      16   0  276m  91m  15m S  0.0  8.9   0:29.38 java
 9564 tomcat    15   0  249m  34m  11m S  0.0  3.4   0:11.79 java
 9636 root      18   0 54804  24m 9784 S  0.0  2.4   0:02.58 httpd
26139 apache    15   0 57520  23m 5996 S  0.0  2.3   0:00.15 httpd
16264 apache    18   0 56984  23m 6104 S  0.0  2.2   0:00.21 httpd
24294 apache    15   0 57512  22m 5864 S  0.0  2.2   0:00.17 httpd
30231 apache    15   0 57272  22m 5748 S  0.0  2.2   0:00.97 httpd
32257 apache    15   0 57512  22m 5416 S  0.0  2.2   0:00.46 httpd
19947 apache    15   0 57512  22m 5320 S  0.0  2.2   0:00.19 httpd
26148 apache    15   0 56688  22m 5992 S  0.0  2.2   0:00.40 httpd
14039 apache    18   0 57000  22m 5492 S  0.0  2.2   0:00.33 httpd
 6051 apache    15   0 57736  22m 5128 S  0.0  2.2   0:00.07 httpd
19937 apache    15   0 56992  22m 5400 S  0.0  2.2   0:00.14 httpd
 5200 apache    15   0 56984  22m 5376 S  0.0  2.2   0:00.23 httpd
10001 apache    15   0 55636  21m 5636 S  0.0  2.1   0:01.05 httpd
11734 apache    15   0 56712  21m 4548 S  0.0  2.1   0:00.46 httpd
18193 apache    15   0 55100  20m 5508 S  0.0  2.0   0:00.24 httpd
14036 apache    15   0 55128  20m 5412 S  0.0  2.0   0:00.10 httpd
 3981 apache    15   0 55128  19m 4860 S  0.0  1.9   0:00.16 httpd
 7588 apache    18   0 55112  19m 4848 S  0.0  1.9   0:00.04 httpd
19768 apache    16   0 55112  19m 4844 S  0.0  1.9   0:00.02 httpd
 5827 apache    15   0 55112  19m 4828 S  0.0  1.9   0:00.05 httpd
29774 apache    15   0 55112  19m 4544 S  0.0  1.9   0:00.11 httpd
 6064 apache    15   0 55112  19m 4536 S  0.0  1.9   0:00.02 httpd
16253 apache    17   0 55116  19m 4532 S  0.0  1.9   0:00.01 httpd
19922 apache    15   0 55112  19m 4540 S  0.0  1.9   0:00.02 httpd
10010 apache    15   0 55100  19m 4524 S  0.0  1.9   0:00.01 httpd
18195 apache    18   0 55104  18m 3872 S  0.0  1.8   0:00.02 httpd
 7361 mysql     15   0  134m  18m 6400 S  0.0  1.8   0:10.18 mysqld
19921 apache    15   0 55088  18m 3588 S  0.0  1.8   0:00.02 httpd
11967 apache    15   0 55080  18m 3584 S  0.0  1.8   0:00.00 httpd
13813 apache    15   0 55088  18m 3576 S  0.0  1.8   0:00.14 httpd
23898 apache    18   0 54968  17m 3212 S  0.0  1.7   0:00.00 httpd
13792 apache    15   0 54968  17m 3088 S  0.0  1.7   0:00.00 httpd
14083 apache    15   0 54968  17m 3088 S  0.0  1.7   0:00.00 httpd
32547 apache    15   0 54944  17m 2924 S  0.0  1.7   0:00.00 httpd
13787 apache    15   0 54944  17m 2908 S  0.0  1.7   0:00.00 httpd
 3623 apache    17   0 54944  17m 2908 S  0.0  1.7   0:00.00 httpd
16024 apache    19   0 54944  17m 2860 S  0.0  1.7   0:00.00 httpd
13791 apache    15   0 54944  17m 2864 S  0.0  1.7   0:00.00 httpd
20090 named     19   0  110m 4244 2056 S  0.0  0.4   0:01.55 named
 9369 cyrus     15   0 15904 3048 1720 S  0.0  0.3   0:00.24 cyrus-master
32735 root      15   0  8852 2888 2116 T  0.0  0.3   0:00.00 mysql

我在使用 Firefox 时遇到的间歇性错误是:

  Server not found

Firefox can't find the server at XXXXXXX.co.

    *   Check the address for typing errors such as
          ww.example.com instead of
          www.example.com

    *   If you are unable to load any pages, check your computer's network
          connection.

    *   If your computer or network is protected by a firewall or proxy, make sure
          that Firefox is permitted to access the Web.

而在其他浏览器上,页面加载大约 10 分钟后却永远不会出现。解决此问题的唯一方法是完全关闭浏览器,因为错误似乎已保存在缓存中。

有人有什么想法吗?

非常感谢。

答案1

对于只有 1GB RAM 的服务器,您绝对应该减少正在运行的 httpd 进程数(尝试启动 4 个,最大 12 个)。您还需要打开交换,因为 OOM 杀手可能正在该机器上进行各种操作,这无疑会导致很多问题。

在 apache 中,StartServers控制要启动的服务器数量,并MaxClients控制最大进程数。对于 swap,您需要创建一个交换分区,mkswap在其上运行,将其放入您的 fstab 中,然后运行swapon -a。您的发行版可能有一个您可以遵循的演练。

答案2

感谢您的回复。我找到了错误的原因。

我们正在使用 Pear Mailer,它使用队列通过 cron 作业堆叠准备发送的电子邮件。Pear 脚本中有一个错误,该脚本在我们网站上的每个操作(发帖、发送消息等)中都会被调用。Pear 崩溃了,进而导致浏览器崩溃,从而导致上述错误。

禁用 Pear 解决了这个问题,调整代码使其再次运行。

多个 httpd 进程是由 Pear Mailer 实例失败引起的。我们花了很长时间才找到问题所在,因为我们从未想到 Pear Mailer 会引起这样的响应。

再次感谢你的帮助。

克里斯。

相关内容