最大内存使用量和百分比不匹配

最大内存使用量和百分比不匹配

我有一台 ec2 服务器,有时会出现内存问题 - 由于内存不足,mysql 进程被终止。这会破坏我的网站和游戏,有时我需要几个小时或几天才能注意到 :(。现在我在服务器上运行 lamp、wordpress 和我的 java mmorpg。我知道我的 mmorpg 服务器需要相当多的 RAM 来保存所有实体和数据。

我有1 GB 内存1 GB 交换空间。这是我目前的最佳输出。

顶部输出

我不明白的是为什么如果我的java 进程为 7.6%和我现在的mysqld 为 1.9%我怎么接近了?它说956MB 内存使用和378MB 交换空间使用 - 这些数字似乎是真实的。这怎么接近 7.6 + 1.9%?

有什么方法可以更好地监控我的内存,或者在 mysql 上配置一些东西,这样它就不会运行 OOM?我很确定我的 java 服务器代码中没有泄漏 - 但不是 100% 确定。

抱歉问了这么多问题 - 我从头开始编写 mmorpg 代码已经 5 年多了,现在我想确保我的服务器已经准备好处理大量的玩家。

评论中请求编辑

自由的输出

             total       used       free     shared    buffers     cached
Mem:       1019336     937316      82020        344       8920      45120
-/+ buffers/cache:     883276     136060
Swap:      1048572     417708     630864

辅助输出

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  19644     0 ?        Ss   Aug14   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Aug14   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Aug14   0:08 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S    Aug14   0:00 [kworker/0:0]
root         5  0.0  0.0      0     0 ?        S<   Aug14   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    Aug14   1:51 [rcu_sched]
root         8  0.0  0.0      0     0 ?        S    Aug14   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    Aug14   0:00 [migration/0]
root        10  0.0  0.0      0     0 ?        S    Aug14   0:00 [kdevtmpfs]
root        11  0.0  0.0      0     0 ?        S<   Aug14   0:00 [netns]
root        12  0.0  0.0      0     0 ?        S<   Aug14   0:00 [perf]
root        15  0.0  0.0      0     0 ?        S    Aug14   0:00 [xenwatch]
root        20  0.0  0.0      0     0 ?        S    Aug14   0:00 [xenbus]
root        21  0.0  0.0      0     0 ?        S    Aug14   0:19 [kworker/0:1]
root       128  0.0  0.0      0     0 ?        S    Aug14   0:00 [khungtaskd]
root       129  0.0  0.0      0     0 ?        S<   Aug14   0:00 [writeback]
root       131  0.0  0.0      0     0 ?        SN   Aug14   0:00 [ksmd]
root       132  0.0  0.0      0     0 ?        SN   Aug14   0:00 [khugepaged]
root       133  0.0  0.0      0     0 ?        S<   Aug14   0:00 [crypto]
root       134  0.0  0.0      0     0 ?        S<   Aug14   0:00 [kintegrityd]
root       135  0.0  0.0      0     0 ?        S<   Aug14   0:00 [bioset]
root       137  0.0  0.0      0     0 ?        S<   Aug14   0:00 [kblockd]
root       488  0.0  0.0      0     0 ?        S<   Aug14   0:00 [md]
root       616  0.0  0.0      0     0 ?        S    Aug14   0:46 [kswapd0]
root       617  0.0  0.0      0     0 ?        S<   Aug14   0:00 [vmstat]
root       689  0.0  0.0      0     0 ?        S    Aug14   0:00 [fsnotify_mark]
root       708  0.0  0.0      0     0 ?        S<   Aug14   0:00 [kthrotld]
root       748  0.0  0.0      0     0 ?        S<   Aug14   0:00 [bioset]
root       752  0.0  0.0      0     0 ?        S<   Aug14   0:00 [deferwq]
root      1374  0.0  0.0      0     0 ?        S<   Aug14   0:00 [ata_sff]
root      1387  0.0  0.0      0     0 ?        S    Aug14   0:00 [scsi_eh_0]
root      1396  0.0  0.0      0     0 ?        S<   Aug14   0:00 [scsi_tmf_0]
root      1399  0.0  0.0      0     0 ?        S    Aug14   0:00 [scsi_eh_1]
root      1412  0.0  0.0      0     0 ?        S<   Aug14   0:00 [scsi_tmf_1]
root      1470  0.0  0.0      0     0 ?        S    Aug14   0:34 [jbd2/xvda1-8]
root      1471  0.0  0.0      0     0 ?        S<   Aug14   0:00 [ext4-rsv-conver]
root      1499  0.0  0.0      0     0 ?        S<   Aug14   0:00 [kworker/0:1H]
root      1517  0.0  0.0  11424    28 ?        Ss   Aug14   0:00 /sbin/udevd -d
root      1590  0.0  0.0      0     0 ?        S<   Aug14   0:00 [kpsmoused]
root      1641  0.0  0.0  11312    32 ?        S    Aug14   0:00 /sbin/udevd -d
root      1827  0.0  0.0      0     0 ?        S    Aug14   0:00 [kauditd]
root      1882  0.0  0.0      0     0 ?        S<   Aug14   0:00 [ipv6_addrconf]
root      2035  0.0  0.0   9360   628 ?        Ss   Aug14   0:00 /sbin/dhclient -q -lf /var/lib/dhclient/dhclient-eth0.leases -pf /var/run/dhclient-eth0.pid eth0
root      2087  0.0  0.0  46536    36 ?        S<sl Aug14   0:00 auditd
root      2108  0.0  0.0 247464     0 ?        Sl   Aug14   0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
dbus      2137  0.0  0.0  21792     4 ?        Ss   Aug14   0:00 dbus-daemon --system
root      2266  0.0  0.0  77840   780 ?        Ss   Aug14   0:00 /usr/sbin/sshd
root      2327  0.0  0.0 115344    28 ?        S    Aug14   0:00 /bin/sh /usr/libexec/mysql55/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql     2536  0.6  1.3 886436 13936 ?        Sl   Aug14  83:28 /usr/libexec/mysql55/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root      2585  0.0  0.0  88992   552 ?        Ss   Aug14   0:18 sendmail: accepting connections
smmsp     2594  0.0  0.0  80440   400 ?        Ss   Aug14   0:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
root      2605  0.0  0.1 431276  1284 ?        Ss   Aug14   0:23 /usr/sbin/httpd
root      2616  0.0  0.0 119516   768 ?        Ss   Aug14   0:03 crond
root      2630  0.0  0.0  17068    88 ?        Ss   Aug14   0:00 /usr/sbin/atd
root      2653  0.0  0.0   4312    32 tty1     Ss+  Aug14   0:00 /sbin/mingetty /dev/tty1
root      2655  0.0  0.0   6460    32 ttyS0    Ss+  Aug14   0:00 /sbin/agetty ttyS0 9600 vt100-nav
root      2657  0.0  0.0   4312    32 tty2     Ss+  Aug14   0:00 /sbin/mingetty /dev/tty2
root      2660  0.0  0.0   4312    32 tty3     Ss+  Aug14   0:00 /sbin/mingetty /dev/tty3
root      2664  0.0  0.0   4312    32 tty4     Ss+  Aug14   0:00 /sbin/mingetty /dev/tty4
root      2666  0.0  0.0   4312    32 tty5     Ss+  Aug14   0:00 /sbin/mingetty /dev/tty5
root      2668  0.0  0.0  10876    32 ?        S    Aug14   0:00 /sbin/udevd -d
root      2669  0.0  0.0   4312    32 tty6     Ss+  Aug14   0:00 /sbin/mingetty /dev/tty6
root      2797  0.0  0.0      0     0 ?        S    Aug14   0:12 [kworker/u30:2]
ntp       2821  0.0  0.1  29288  1808 ?        Ss   Aug14   0:01 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
apache   12405  0.1  4.2 471264 42920 ?        S    Aug22   1:08 /usr/sbin/httpd
apache   12412  0.1  3.6 466372 37440 ?        S    Aug22   1:07 /usr/sbin/httpd
apache   12413  0.1  4.1 487140 42788 ?        S    Aug22   1:09 /usr/sbin/httpd
apache   12416  0.1  3.8 466764 39020 ?        S    Aug22   1:12 /usr/sbin/httpd
apache   12417  0.1  4.3 474916 44180 ?        S    Aug22   1:09 /usr/sbin/httpd
apache   12418  0.1  3.9 466596 40108 ?        S    Aug22   1:07 /usr/sbin/httpd
apache   12419  0.1  4.1 483704 42392 ?        S    Aug22   1:08 /usr/sbin/httpd
root     12960  0.0  0.0      0     0 ?        S    Aug22   0:00 [kworker/u30:0]
apache   14977  0.7  4.2 485100 43372 ?        S    Aug21  24:02 /usr/sbin/httpd
apache   14978  0.7  4.1 489860 42536 ?        S    Aug21  23:32 /usr/sbin/httpd
apache   14979  0.7  4.3 484092 44816 ?        S    Aug21  23:51 /usr/sbin/httpd
apache   14980  0.7  4.1 491120 42312 ?        S    Aug21  24:01 /usr/sbin/httpd
apache   14981  0.7  4.1 491984 42732 ?        S    Aug21  23:34 /usr/sbin/httpd
apache   14982  0.7  4.2 491680 43680 ?        S    Aug21  23:43 /usr/sbin/httpd
apache   14983  0.7  4.1 491768 42404 ?        S    Aug21  23:28 /usr/sbin/httpd
apache   14984  0.7  4.0 490436 41508 ?        S    Aug21  23:42 /usr/sbin/httpd
apache   15030  0.7  4.3 486920 44224 ?        S    Aug21  23:39 /usr/sbin/httpd
apache   15040  0.6  4.7 486704 48124 ?        S    Aug21  23:11 /usr/sbin/httpd
apache   15343  0.6  4.0 484224 41632 ?        S    Aug21  22:56 /usr/sbin/httpd
apache   16238  0.6  4.1 486556 41812 ?        S    Aug21  22:34 /usr/sbin/httpd
root     17169  0.0  0.6 115740  6536 ?        Ss   10:58   0:00 sshd: ec2-user [priv]
ec2-user 17171  0.0  0.5 115740  5140 ?        S    10:58   0:00 sshd: ec2-user@pts/0
ec2-user 17172  0.0  0.3 115476  3320 pts/0    Ss   10:58   0:00 -bash
ec2-user 17227  4.0  0.2 117204  2340 pts/0    R+   10:58   0:00 ps aux
ec2-user 21561  0.0  0.0 113084     0 ?        S    Aug21   0:00 /bin/sh /home/ec2-user/bin/startJayServer.sh
ec2-user 21562 49.2  7.2 2283928 73668 ?       Sl   Aug21 1393:33 java -server com.jayavon.game.server.MyServer -PROD
apache   24084  0.5  4.4 486596 45336 ?        S    Aug21  14:53 /usr/sbin/httpd

答案1

默认情况下,top将根据 CPU 使用率对进程进行排序 - 因此看起来,占用所有内存的进程并没有占用太多的 CPU 时间。

排序top通过 RESident 内存,使用

top -o RES
# or
top -o MEM

# commands may vary slightly depending on distros

在您提供的打印件中ps aux,我们可以看到大约有 20httpd过程,每个过程消耗接近 40MiB =~ 800MiB 的宝贵 RAM。

您可能需要查看 httpd / apache2 的调整指南。

相关内容