为什么我的 64 位 Ubuntu VPS 认为它使用的 RAM 比实际的多?

为什么我的 64 位 Ubuntu VPS 认为它使用的 RAM 比实际的多?

这很难简洁地解释,但我的服务器耗尽了物理 RAM,只运行了几个 apache/php 进程,进入了交换区。为了解决这个问题,我们设置了 fcgid 以不生成太多 php 进程,但这意味着我们在仅处于非常中等负载的情况下开始处理 503 错误。

如果您查看正在运行的进程,它们似乎并未考虑到机器报告的已使用 RAM 数量。

我知道一些问题,例如 Linux 看起来没有可用的 RAM,因为它全部被标记为缓存或缓冲等。但事实似乎并非如此。

每个进程似乎都有巨大的虚拟内存大小(即使使用的交换非常低)但我不确定这是否相关或是否需要担心。

仅供参考,它目前正在使用 worker MPM 和 mod_fcgid 运行 apache。但是使用 prefork MPM 的 apache 也出现了同样的问题。

感觉机器大大高估了它所使用的 RAM 量(或低估了可用的 RAM 量)。

希望大家能理解我的手势解释。请问我是否可以提供更多信息。

以下是该服务器的一些统计数据(一分钟内获取)

# top

top - 12:29:03 up 7 days, 22:24,  2 users,  load average: 0.45, 0.50, 0.50
Tasks: 103 total,   1 running, 102 sleeping,   0 stopped,   0 zombie
Cpu(s):  4.7%us,  0.4%sy,  0.0%ni, 94.0%id,  0.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1514952k total,  1417244k used,    97708k free,    15236k buffers
Swap:  3681012k total,    90324k used,  3590688k free,    61156k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                           
28863 www-data  20   0  180m  49m 3644 S    0  3.4   1:13.07 php5                                              
28862 www-data  20   0  179m  49m 3668 S    0  3.3   0:48.49 php5                                              
27699 www-data  20   0  180m  48m 3584 S    0  3.3   1:44.68 php5                                              
28865 www-data  20   0  177m  47m 3644 S    0  3.2   1:13.07 php5                                              
27698 www-data  20   0  180m  47m 4132 S    0  3.2   1:40.05 php5                                              
 3203 mysql     20   0  494m  30m 3828 S    0  2.1  75:01.59 mysqld                                            
28777 www-data  20   0  174m 7928 2032 S    0  0.5   0:02.48 apache2                                           
28748 www-data  20   0  174m 6952 1480 S    0  0.5   0:02.58 apache2                                           
28776 www-data  20   0  110m 6744 1480 S    0  0.4   0:02.12 apache2                                           
28959 paul      20   0 36756 5484 2316 S    0  0.4   0:00.37 mysql                                             
22846 root       0 -20 14052 3820 2628 S    0  0.3   0:00.85 atop                                              
28923 root      20   0 70616 3140 2416 S    0  0.2   0:00.04 sshd                                              
24982 www-data  20   0  177m 2820 2816 S    0  0.2   0:08.38 php5                                              
28935 paul      20   0 19428 2164 1584 S    0  0.1   0:00.01 bash                                              
  933 root      20   0 58592 1724 1420 S    0  0.1   1:31.39 vmtoolsd                                          
27451 root      20   0 19568 1608 1220 S    0  0.1   0:00.05 bash                                              
28934 paul      20   0 70616 1580  828 S    0  0.1   0:00.00 sshd                                              
24471 root      20   0  103m 1356  904 S    0  0.1   0:00.09 apache2                                           
29086 root      20   0 19220 1284  964 R    2  0.1   0:00.01 top                                               
28836 postfix   20   0 39272 1272  824 S    0  0.1   0:00.00 pickup                                            
24473 www-data  20   0  102m 1208  692 S    0  0.1   0:00.04 apache2                                           
  717 syslog    20   0  187m 1140  896 S    0  0.1   0:00.79 rsyslogd                                          
    1 root      20   0 23580  972  672 S    0  0.1   0:01.53 init                                              
 1174 postfix   20   0 39432  916  796 S    0  0.1   0:00.21 qmgr                                              
 1165 root      20   0 37208  908  792 S    0  0.1   0:00.40 master                                            
27430 root      20   0 70616  848  844 S    0  0.1   0:00.04 sshd                                              
27442 jack      20   0 19464  812  808 S    0  0.1   0:00.01 bash                                              
  960 root      20   0 21076  740  652 S    0  0.0   0:00.48 cron                                              
27450 root      20   0 37052  740  736 S    0  0.0   0:00.02 su                                                
  685 ntpd      20   0 20312  660  612 S    0  0.0   0:00.08 ntpd                                              
27441 jack      20   0 70616  600  480 S    0  0.0   0:00.04 sshd                                              
  725 root      20   0 49260  592  484 S    0  0.0   0:00.08 sshd                                              
  684 root      20   0 24532  548  524 S    0  0.0   0:00.02 ntpd                                              
  944 root      20   0  6080  524  520 S    0  0.0   0:00.00 getty                                             
  946 root      20   0  6080  524  520 S    0  0.0   0:00.00 getty                                             
  949 root      20   0  6080  524  520 S    0  0.0   0:00.00 getty                                             
  951 root      20   0  6080  524  520 S    0  0.0   0:00.00 getty                                             
  956 root      20   0  6080  524  520 S    0  0.0   0:00.00 getty                                             
 1200 root      20   0  6080  524  520 S    0  0.0   0:00.00 getty                                             
  336 root      20   0 17168  296  292 S    0  0.0   0:00.10 upstart-udev-br                                   
  338 root      16  -4 16972  268  264 S    0  0.0   0:00.14 udevd                                             
  443 root      18  -2 16880  184  180 S    0  0.0   0:00.00 udevd                                             
  442 root      18  -2 16880  168  164 S    0  0.0   0:00.01 udevd                                             
    2 root      20   0     0    0    0 S    0  0.0   0:00.01 kthreadd                                          
    3 root      RT   0     0    0    0 S    0  0.0   0:00.47 migration/0                                       
    4 root      20   0     0    0    0 S    0  0.0   0:00.26 ksoftirqd/0                                       
    5 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/0                                        
    6 root      RT   0     0    0    0 S    0  0.0   0:00.68 migration/1                                       
    7 root      20   0     0    0    0 S    0  0.0   0:02.21 ksoftirqd/1 

# free
             total       used       free     shared    buffers     cached
Mem:       1514952    1432132      82820          0      15360      61712
-/+ buffers/cache:    1355060     159892
Swap:      3681012      90324    3590688


# cat /proc/meminfo
MemTotal:        1514952 kB
MemFree:           88712 kB
Buffers:           15400 kB
Cached:            61864 kB
SwapCached:         9480 kB
Active:           247996 kB
Inactive:         117416 kB
Active(anon):     215676 kB
Inactive(anon):    75200 kB
Active(file):      32320 kB
Inactive(file):    42216 kB
Unevictable:        3816 kB
Mlocked:            3816 kB
SwapTotal:       3681012 kB
SwapFree:        3590696 kB
Dirty:               332 kB
Writeback:             0 kB
AnonPages:        287268 kB
Mapped:            14364 kB
Shmem:               188 kB
Slab:              23140 kB
SReclaimable:      10060 kB
SUnreclaim:        13080 kB
KernelStack:        2032 kB
PageTables:         6344 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     4438488 kB
Committed_AS:     592516 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      275416 kB
VmallocChunk:   34359457944 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        8192 kB
DirectMap2M:     1540096 kB




# ps ax -o rss,size,vsize,cmd | grep -v "0 \["
  RSS    SZ    VSZ CMD
  972   564  23580 /sbin/init
  296   556  17168 upstart-udev-bridge --daemon
  268   504  16972 udevd --daemon
  168   412  16880 udevd --daemon
  184   412  16880 udevd --daemon
  548   304  24532 /usr/sbin/ntpd
  660   296  20312 /usr/sbin/ntpd
 1140 163216 192416 rsyslogd -c4
  592   564  49260 /usr/sbin/sshd
 1724   964  58592 /usr/sbin/vmtoolsd
  524   280   6080 /sbin/getty -8 38400 tty4
  524   280   6080 /sbin/getty -8 38400 tty5
  524   280   6080 /sbin/getty -8 38400 tty2
  524   280   6080 /sbin/getty -8 38400 tty3
  524   280   6080 /sbin/getty -8 38400 tty6
  740   480  21076 cron
  908   340  37208 /usr/lib/postfix/master
  916   448  39432 qmgr -l -t fifo -u
  524   280   6080 /sbin/getty -8 38400 tty1
31532 466492 506696 /usr/sbin/mysqld
 3820  1116  14052 /usr/bin/atop -a -w /var/log/atop.log 600
 1364  2528 106036 /usr/sbin/apache2 -k start
 1208  2528 105264 /usr/sbin/apache2 -k start
 2820 50916 182080 /usr/lib/cgi-bin/php5
  848   756  70616 sshd: jack [priv]
  600   756  70616 sshd: jack@pts/0 
  812   572  19464 -bash
  740   532  37052 su
 1608   676  19568 bash
48216 53332 184496 /usr/lib/cgi-bin/php5
49524 55380 184472 /usr/lib/cgi-bin/php5
 7700 74448 180096 /usr/sbin/apache2 -k start
 7460 74352 180000 /usr/sbin/apache2 -k start
 8340 74232 179880 /usr/sbin/apache2 -k start
 1272   340  39272 pickup -l -t fifo -u -c
49256 53332 182424 /usr/lib/cgi-bin/php5
51060 55376 184468 /usr/lib/cgi-bin/php5
48960 53072 182164 /usr/lib/cgi-bin/php5
 3140   756  70616 sshd: paul [priv]
 1580   756  70616 sshd: paul@pts/1 
 2164   536  19428 -bash
 5484  3328  36756 mysql -uroot -px xxxxxxxx -Dkambos_db
 4812 333244 438892 /usr/sbin/apache2 -k start
 4848 398788 504436 /usr/sbin/apache2 -k start
 2168  4364 110012 /usr/sbin/apache2 -k start
 1012   612   6828 ps ax -o rss,size,vsize,cmd
  928   272   7628 grep --color=auto -v 0 \[

# uname -a
Linux rubik.titaninteractive.com.au 2.6.32-24-server #43-Ubuntu SMP Thu Sep 16 16:05:42 UTC 2010 x86_64 GNU/Linux

答案1

您是否指定了指令线程栈大小在阿帕奇中?

否则,它将恢复为系统默认值,对于 32 位 Linux,通常为 8192 KB - 对于 64 位,它可能有所不同,因此请参见输出中的“堆栈大小”ulimit -a。您不需要每个线程 8MB - 128k 可能就足够了。

首先,尝试一下线程堆栈大小 131072- 看MPM 档案。(或添加“ulimit -s 128”到你的 Apache 启动脚本)。你可能需要根据你的配置稍微调整一下这个数字。

如果是类似的问题导致 php 实例非常大,我不会感到惊讶(如果不是由于 APC,如上所述)。我对 mod_fcgid 不太熟悉,所以我将这个问题留给其他人。

相关内容