AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 387427
Accepted
gentrobot
gentrobot
Asked: 2012-05-10 04:05:37 +0800 CST2012-05-10 04:05:37 +0800 CST 2012-05-10 04:05:37 +0800 CST

Apache2 进程在 512MB VPS 上消耗了太多内存

  • 772

我正在运行具有 512MB 内存的 Ubuntu VPS。它只是开发服务器,因此实际上没有流量。尽管如此,我时不时地收到内存耗尽消息,我的整个内存都被用完了。我试图在 SF 浏览各种类似的问题,但无法真正了解没有流量的服务器正在消耗内存的场景。以下是顶部的输出:

ps aux 的输出为:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3  23572  1684 ?        Ss   Apr11   0:03 init
root      1177  0.0  0.1  18888  1028 ?        Ss   Apr11   0:01 cron
mysql     1189  0.0  5.6 258344 29680 ?        Ssl  Apr11   1:04 /usr/sbin/mysqld
syslog    1202  0.0  0.1  12536   788 ?        Ss   Apr11   0:01 /sbin/syslogd -u syslog
root      1268  0.0  0.5  49424  2684 ?        Ss   Apr11   0:00 /usr/sbin/sshd -D
root      1305  0.0  0.4  66168  2560 ?        Ss   Apr11   0:15 sendmail: MTA: accepting connections          
root      8062  0.0  0.6  70796  3408 ?        Ss   10:50   0:00 sshd: root@pts/0    
root      8074  0.0  0.4  18160  2224 pts/0    Ss+  10:52   0:00 -bash
root      8134  0.0  0.6  70796  3428 ?        Ss   11:37   0:00 sshd: root@pts/1    
root      8146  0.0  0.4  18160  2232 pts/1    Ss   11:37   0:00 -bash
root      9337  0.0  2.8 270140 15176 ?        Ss   11:49   0:00 /usr/sbin/apache2 -k start
www-data  9341  0.0  1.9 270272 10276 ?        S    11:49   0:00 /usr/sbin/apache2 -k start
root      9346  0.0  0.2  15064  1136 pts/1    R+   11:56   0:00 ps aux
bind     19665  0.0  2.5 142836 13624 ?        Ssl  Apr25   0:00 /usr/sbin/named -u bind

和顶部的输出:

Tasks:  18 total,   1 running,  17 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:    524288k total,   301000k used,   223288k 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 23572 1684 1332 S    0  0.3   0:03.66 init                                                                                     
 1177 root      18   0 18888 1028  796 S    0  0.2   0:01.17 cron                                                                                     
 1189 mysql     18   0  252m  28m 7944 S    0  5.7   1:04.58 mysqld                                                                                   
 1202 syslog    15   0 12536  788  592 S    0  0.2   0:01.95 syslogd                                                                                  
 1268 root      18   0 49424 2684 2120 S    0  0.5   0:00.12 sshd                                                                                     
 1305 root      18   0 66168 2560  880 S    0  0.5   0:15.99 sendmail-mta                                                                             
 8062 root      19   0 70796 3408 2656 S    0  0.7   0:00.04 sshd                                                                                     
 8074 root      15   0 18160 2224 1548 S    0  0.4   0:00.00 bash                                                                                     
 8134 root      15   0 70796 3428 2656 S    0  0.7   0:00.10 sshd                                                                                     
 8146 root      15   0 18160 2232 1556 S    0  0.4   0:00.04 bash                                                                                     
 9337 root      18   0  263m  14m 5736 S    0  2.9   0:00.08 apache2                                                                                  
 9341 www-data  15   0  263m  10m  816 S    0  2.0   0:00.00 apache2                                                                                  
 9397 root      18   0 70796 3408 2656 S    0  0.7   0:00.02 sshd                                                                                     
 9409 root      15   0 12560  928  748 S    0  0.2   0:00.00 sftp-server                                                                              
 9410 root      15   0 70796 3428 2656 S    0  0.7   0:00.01 sshd                                                                                     
 9422 root      18   0 12564  872  668 S    0  0.2   0:00.00 sftp-server                                                                              
 9425 root      15   0 19176 1188  932 R    0  0.2   0:00.00 top                                                                                      
19665 bind      18   0  139m  13m 2152 S    0  2.6   0:00.07 named                                                                                    
ubuntu apache-2.2 outofmemoryerror memory-usage
  • 1 1 个回答
  • 1801 Views

1 个回答

  • Voted
  1. Best Answer
    EightBitTony
    2012-05-10T04:16:18+08:002012-05-10T04:16:18+08:00

    Apache2 + PHP + mySQL 始终使用大量内存,即使是开箱即用的少量连接。你必须调整它。您需要限制 Apache 进程的数量(假设您正在使用 mpm_prefork),并且需要通过调整各种缓存和其他元素来减少 mysql 的内存占用。

    5-10 个并发连接到一个未调整的 Apache2 服务器(prefork mpm),使用 PHP 和 mysql,内存为 512MB,可能会导致它短暂地耗尽内存。

    另外,您的服务器正在运行其他进程,如绑定和发送邮件,它们有自己的内存要求。

    您将不得不使用网络上的各种指南和 ServerFault 上的其他类似问题来调整它。

    值得一提的是,这与每天的总点击量无关,而与 Web 服务器的并发会话有关。每天 20 次点击都在同一秒内会杀死您的服务器,每天 20 次点击分布在每小时 1 次点击中则不会。

    这么说吧——如果每个 Apache2 进程都使用 40MB 内存(使用 PHP5 和其他模块可以很容易地做到这一点),在服务器仅将 400MB 内存用于 Web 服务器之前,您可以容忍大约 9 或 10 个并发连接。剩下 115MB 用于其他所有内容。

    • 5

相关问题

  • 在 Ubuntu 上设置电子邮件服务器

  • 在 Linux Xen VPS 上优化 Apache 和 MySQL

  • mod_rewrite 不转发 GET 参数

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve