我的服务器处于非常内存使用率高不断地——以至于惯于有时我会通过 ssh 登录。我必须重新启动服务器才能登录,重新启动后内存使用率会下降到约 90%,然后慢慢上升到约 190%。
我注意到重新启动 Apache 也会让我回到 90%,我可以使用托管工具慢慢观察内存上升。我一直在观察 top,但我不知道该寻找什么。我很确定罪魁祸首是 Apache,但我不确定为什么。
最高 130%
top - 08:14:59 up 49 min, 1 user, load average: 0.04, 0.01, 0.00
Tasks: 41 total, 1 running, 40 sleeping, 0 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: 946344k total, 724484k used, 221860k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 15 0 23456 1664 1276 S 0 0.2 0:01.82 init
1173 messageb 16 0 23436 920 612 S 0 0.1 0:00.01 dbus-daemon
1222 root 15 0 49272 1088 540 S 0 0.1 0:00.02 sshd
1237 root 18 0 27128 1800 1428 S 0 0.2 0:00.00 vsftpd
1245 root 18 0 21088 1020 780 S 0 0.1 0:00.00 cron
1249 mysql 15 0 178m 36m 7356 S 0 4.0 0:01.26 mysqld
1285 syslog 18 0 12460 804 612 S 0 0.1 0:00.00 syslogd
1305 bind 18 0 286m 26m 2056 S 0 2.8 0:00.02 named
1328 root 21 0 6292 500 392 S 0 0.1 0:00.00 courierlogger
1329 root 18 0 18788 812 652 S 0 0.1 0:00.00 authdaemond
1339 root 18 0 18788 276 112 S 0 0.0 0:00.00 authdaemond
1340 root 18 0 18788 276 112 S 0 0.0 0:00.00 authdaemond
1341 root 18 0 18788 276 112 S 0 0.0 0:00.00 authdaemond
1341 root 18 0 18788 276 112 S 0 0.0 0:00.00 authdaemond
1342 root 18 0 18788 276 112 S 0 0.0 0:00.00 authdaemond
1343 root 18 0 18788 276 112 S 0 0.0 0:00.00 authdaemond
1426 root 15 0 37216 2276 1784 S 0 0.2 0:00.00 master
1442 postfix 18 0 39440 2236 1760 S 0 0.2 0:00.00 qmgr
1443 postfix 15 0 39280 2188 1728 S 0 0.2 0:00.00 pickup
1559 root 18 0 120m 3928 2444 S 0 0.4 0:00.06 console-kit-dae
1650 root 16 0 79148 3464 2696 S 0 0.4 0:00.03 sshd
1664 robert 17 0 79148 1744 960 S 0 0.2 0:00.01 sshd
1665 robert 16 0 12476 904 736 S 0 0.1 0:00.01 sftp-server
1666 root 16 0 79120 3516 2732 S 0 0.4 0:00.03 sshd
1680 jackson 15 0 79120 1732 932 S 0 0.2 0:00.14 sshd
1681 jackson 15 0 18032 2140 1500 S 0 0.2 0:00.04 bash
1946 root 18 0 227m 10m 4960 S 0 1.1 0:00.03 apache2
1950 www-data 15 0 270m 52m 3676 S 0 5.7 0:01.34 apache2
1951 www-data 15 0 227m 6828 1232 S 0 0.7 0:00.03 apache2
1952 www-data 15 0 227m 6828 1232 S 0 0.7 0:00.03 apache2
1960 www-data 15 0 227m 7056 1288 S 0 0.7 0:00.02 apache2
1963 www-data 15 0 271m 53m 3696 S 0 5.8 0:01.30 apache2
1964 www-data 15 0 270m 52m 3672 S 0 5.7 0:01.35 apache2
1965 www-data 15 0 270m 52m 3672 S 0 5.7 0:01.21 apache2
1968 root 16 0 79148 3468 2696 S 0 0.4 0:00.04 sshd
1982 robert 18 0 79148 1752 960 S 0 0.2 0:00.00 sshd
1983 robert 18 0 12476 924 732 S 0 0.1 0:00.00 sftp-server
1984 www-data 15 0 227m 6824 1228 S 0 0.7 0:00.02 apache2
1985 www-data 15 0 227m 6824 1228 S 0 0.7 0:00.02 apache2
1986 www-data 15 0 227m 6816 1224 S 0 0.7 0:00.00 apache2
1987 www-data 18 0 227m 5908 560 S 0 0.6 0:00.00 apache2
免费-m
total used free shared buffers cached
Mem: 924 697 227 0 0 0
-/+ buffers/cache: 697 227
Swap: 0 0 0
我应该怎么办下一个? 谢谢您的帮助。
** 编辑 **
顶部(推 > 一次)
top - 09:46:06 up 2:21, 1 user, load average: 0.01, 0.03, 0.00
Tasks: 37 total, 1 running, 36 sleeping, 0 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: 946344k total, 799432k used, 146912k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3274 www-data 15 0 273m 54m 4756 S 0 5.9 0:02.84 apache2
2043 www-data 18 0 272m 54m 3692 S 0 5.8 0:03.65 apache2
3109 www-data 15 0 271m 53m 3748 S 0 5.8 0:05.44 apache2
3217 www-data 15 0 270m 52m 3700 S 0 5.7 0:01.46 apache2
3310 www-data 15 0 270m 52m 3672 S 0 5.7 0:01.29 apache2
2044 www-data 15 0 264m 46m 3764 S 0 5.0 0:03.20 apache2
1249 mysql 15 0 244m 38m 7348 S 0 4.2 0:03.35 mysqld
1305 bind 18 0 286m 26m 2060 S 0 2.8 0:00.02 named
2038 root 18 0 227m 10m 4960 S 0 1.1 0:00.06 apache2
3376 www-data 15 0 227m 7220 1376 S 0 0.8 0:00.00 apache2
3291 www-data 15 0 227m 7024 1376 S 0 0.7 0:00.02 apache2
3377 www-data 15 0 227m 6824 1228 S 0 0.7 0:00.00 apache2
3379 www-data 19 0 227m 5924 564 S 0 0.6 0:00.00 apache2
1559 root 18 0 120m 3928 2444 S 0 0.4 0:00.18 console-kit-dae
3358 root 16 0 79120 3508 2732 S 0 0.4 0:00.03 sshd
1650 root 15 0 79148 3476 2696 S 0 0.4 0:00.04 sshd
1426 root 15 0 37216 2276 1784 S 0 0.2 0:00.00 master
1442 postfix 15 0 39440 2236 1760 S 0 0.2 0:00.00 qmgr
3265 postfix 15 0 39280 2192 1728 S 0 0.2 0:00.00 pickup
3373 jackson 18 0 17976 2028 1448 S 0 0.2 0:00.00 bash
1664 robert 15 0 79148 1900 1060 S 0 0.2 0:00.21 sshd
1237 root 18 0 27128 1800 1428 S 0 0.2 0:00.00 vsftpd
3372 jackson 15 0 79120 1724 932 S 0 0.2 0:00.01 sshd
1 root 15 0 23456 1664 1276 S 0 0.2 0:01.82 init
3380 jackson 15 0 19100 1344 1072 R 0 0.1 0:00.06 top
1222 root 15 0 49272 1088 540 S 0 0.1 0:00.06 sshd
1245 root 18 0 21088 1020 780 S 0 0.1 0:00.00 cron
1665 robert 15 0 12476 952 736 S 0 0.1 0:00.21 sftp-server
1173 messageb 16 0 23436 920 612 S 0 0.1 0:00.02 dbus-daemon
1329 root 18 0 18788 812 652 S 0 0.1 0:00.00 authdaemond
1285 syslog 18 0 12460 804 612 S 0 0.1 0:00.00 syslogd
1328 root 21 0 6292 500 392 S 0 0.1 0:00.00 courierlogger
1339 root 18 0 18788 276 112 S 0 0.0 0:00.00 authdaemond
1340 root 18 0 18788 276 112 S 0 0.0 0:00.00 authdaemond
1341 root 18 0 18788 276 112 S 0 0.0 0:00.00 authdaemond
1342 root 18 0 18788 276 112 S 0 0.0 0:00.00 authdaemond
1343 root 18 0 18788 276 112 S 0 0.0 0:00.00 authdaemond
答案1
您似乎有 1GB 的 RAM。这是 21 世纪:借用另一位用户的妙语:我的手机有比这更大的 RAM!——因此建议 1 是增加更多 RAM。2GB 是最低限度,如果您在一台机器上运行完整的 LAMP 堆栈(Linux、Apache+PHP 和 MySQL 等数据库),您确实需要 4GB。
你似乎也无交换- 这是错误与不善,因此建议 #2 是“配置一些交换空间”。
类 Unix 系统(包括 Linux)希望在内存耗尽时能够进行交换。如果内存耗尽,并且没有交换空间来存放东西,它们通常会发脾气并停止工作。
这可能就是你正在发生的事情。
如果您使用的是某种虚拟/云系统,并且无法添加交换空间,那么您将回到建议 1(添加足够的 RAM,以免耗尽)。
如果您配置了没有交换空间的 Linux 安装,则可以添加交换文件(这里有一个操作指南,如果你用 google 搜索,还可以找到其他的),但你最好重新安装机器并创建实际的交换分割 它更有效率。
答案2
调低 Apache 设置。对于该级别的内存,如下所示:
StartServers 2
MinSpareServers 1
MaxSpareServers 3
MaxClients 10
(确保重新启动 apache)
如果您看到哪怕是少量的请求,在那么多内存上运行完整的 LAMP 堆栈都会很困难。