G-Wan 使用所有可用内存

G-Wan 使用所有可用内存

我已经在 KVM VPS 上安装了目前最新的 g-wan 网络服务器(4.3.14 x64),并使用 Vultr 提供的 Ubuntu 14.04.02 x64 服务器版本(1GB RAM、1 个 CPU 核心和 2GB 交换)。

VPS 设置非常简单 - 只有 Ubuntu 和 g-wan。我已将 g-wan 复制到 /opt/gwan/,并使用 g-wan 文档中提供的 init 脚本将其作为服务启动。我还禁用了 csp 文件夹(通过将其重命名为 _csp),并且没有安装任何其他脚本语言来使用它,因为我只需要它作为静态文件服务器。除此之外,我没有进行任何其他自定义(除了启用访问和错误日​​志)。

最初,g-wan 的内存占用非常低 - 仅略高于 4MB,但仅在几个小时后,它就增长了很多(上次重启后 7 小时,现在占用了大约 360MB) - 时间越长,它增长得越多,机器变得无响应(我猜是由于交换造成的),唯一的解决办法就是重新启动它。

另外我必须注意,这种情况发生在服务器大部分处于空闲状态时,因为它尚未投入生产 - 我在访问和错误日​​志中仅看到少数机器人请求。

如果需要,我可以提供更多信息,只是现在不知道还能提什么。

//编辑:

以下是跟踪日志的最后 30 行:

Tue, 28 Jul 2015 08:08:55 GMT: start
Tue, 28 Jul 2015 08:08:56 GMT: start
Tue, 28 Jul 2015 08:08:57 GMT: start
Tue, 28 Jul 2015 08:08:58 GMT: start
Tue, 28 Jul 2015 08:09:00 GMT: start
Tue, 28 Jul 2015 08:09:01 GMT: start
Tue, 28 Jul 2015 08:09:02 GMT: start
Tue, 28 Jul 2015 08:09:03 GMT: start
Tue, 28 Jul 2015 08:09:04 GMT: start
Tue, 28 Jul 2015 08:09:06 GMT: start
Tue, 28 Jul 2015 08:09:07 GMT: start
Tue, 28 Jul 2015 08:09:08 GMT: start
Tue, 28 Jul 2015 08:09:09 GMT: start
Tue, 28 Jul 2015 08:09:10 GMT: start
Tue, 28 Jul 2015 08:09:11 GMT: start
Tue, 28 Jul 2015 08:09:13 GMT: start
Tue, 28 Jul 2015 08:09:14 GMT: start
Tue, 28 Jul 2015 08:09:15 GMT: start
Tue, 28 Jul 2015 08:09:16 GMT: start
Tue, 28 Jul 2015 08:09:18 GMT: start
Tue, 28 Jul 2015 08:09:19 GMT: start
Tue, 28 Jul 2015 08:09:20 GMT: start
Tue, 28 Jul 2015 08:09:20 GMT: signal 15: Termination
Tue, 28 Jul 2015 08:09:40 GMT: start
Tue, 28 Jul 2015 14:45:05 GMT: signal 2: Ctrl-C
Tue, 28 Jul 2015 14:45:41 GMT: start
Tue, 28 Jul 2015 17:56:47 GMT: signal 15: Termination
Tue, 28 Jul 2015 17:58:15 GMT: start
Tue, 28 Jul 2015 17:59:00 GMT: signal 15: Termination
Tue, 28 Jul 2015 17:59:11 GMT: start

以及对它们的一些解释:

我检查了整个日志,它只包含包含时间戳和每秒启动的行。第一次终止是我停止服务并通过手动启动服务器时./gwan。第二次终止 Ctrl-C 是当我停止上一个命令(运行时终端上没有显示任何内容)并这次启动它时./gwan -d:www-data:www-data- 再次没有任何问题。我再次将其终止并将其作为服务启动 - 日志中再次没有每秒的启动条目,尽管到目前为止它只运行了一个小时。

gwan.log 文件也没有什么不同,除了启动/停止信息和每秒打印的内存消耗,如下所示:

[Tue Jul 28 03:29:32 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:32 2015 GMT] log files enabled
[Tue Jul 28 03:29:32 2015 GMT] memory footprint: 188.71 MiB.
[Tue Jul 28 03:29:33 2015 GMT] memory footprint: 187.56 MiB.
[Tue Jul 28 03:29:33 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:33 2015 GMT] log files enabled
[Tue Jul 28 03:29:33 2015 GMT] memory footprint: 189.10 MiB.
[Tue Jul 28 03:29:34 2015 GMT] memory footprint: 187.58 MiB.
[Tue Jul 28 03:29:34 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:34 2015 GMT] log files enabled
[Tue Jul 28 03:29:34 2015 GMT] memory footprint: 188.72 MiB.
[Tue Jul 28 03:29:35 2015 GMT] memory footprint: 187.61 MiB.
[Tue Jul 28 03:29:35 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:35 2015 GMT] log files enabled
[Tue Jul 28 03:29:35 2015 GMT] memory footprint: 190.40 MiB.
[Tue Jul 28 03:29:36 2015 GMT] memory footprint: 187.61 MiB.
[Tue Jul 28 03:29:36 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:36 2015 GMT] log files enabled
[Tue Jul 28 03:29:36 2015 GMT] memory footprint: 188.75 MiB.
[Tue Jul 28 03:29:37 2015 GMT] memory footprint: 187.63 MiB.
[Tue Jul 28 03:29:37 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:37 2015 GMT] log files enabled
[Tue Jul 28 03:29:37 2015 GMT] memory footprint: 190.32 MiB.
[Tue Jul 28 03:29:38 2015 GMT] memory footprint: 187.66 MiB.
[Tue Jul 28 03:29:38 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:38 2015 GMT] log files enabled
[Tue Jul 28 03:29:38 2015 GMT] memory footprint: 188.79 MiB.
[Tue Jul 28 03:29:39 2015 GMT] memory footprint: 187.67 MiB.
[Tue Jul 28 03:29:39 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:39 2015 GMT] log files enabled
[Tue Jul 28 03:29:39 2015 GMT] memory footprint: 190.61 MiB.
[Tue Jul 28 03:29:41 2015 GMT] memory footprint: 187.69 MiB.
[Tue Jul 28 03:29:41 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:41 2015 GMT] log files enabled
[Tue Jul 28 03:29:41 2015 GMT] memory footprint: 188.83 MiB.
[Tue Jul 28 03:29:42 2015 GMT] memory footprint: 187.70 MiB.
[Tue Jul 28 03:29:42 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:42 2015 GMT] log files enabled
[Tue Jul 28 03:29:42 2015 GMT] memory footprint: 190.10 MiB.
[Tue Jul 28 03:29:43 2015 GMT] memory footprint: 187.71 MiB.
[Tue Jul 28 03:29:43 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:43 2015 GMT] log files enabled
[Tue Jul 28 03:29:43 2015 GMT] memory footprint: 188.86 MiB.
[Tue Jul 28 03:29:44 2015 GMT] memory footprint: 187.73 MiB.
[Tue Jul 28 03:29:44 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:44 2015 GMT] log files enabled
[Tue Jul 28 03:29:44 2015 GMT] memory footprint: 190.13 MiB.
[Tue Jul 28 03:29:45 2015 GMT] memory footprint: 187.76 MiB.
[Tue Jul 28 03:29:45 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:45 2015 GMT] log files enabled
[Tue Jul 28 03:29:45 2015 GMT] memory footprint: 188.91 MiB.
[Tue Jul 28 03:29:46 2015 GMT] memory footprint: 187.74 MiB.
[Tue Jul 28 03:29:46 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:46 2015 GMT] log files enabled
[Tue Jul 28 03:29:46 2015 GMT] memory footprint: 188.90 MiB.
[Tue Jul 28 03:29:47 2015 GMT] memory footprint: 187.79 MiB.
[Tue Jul 28 03:29:47 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:47 2015 GMT] log files enabled
[Tue Jul 28 03:29:47 2015 GMT] memory footprint: 188.92 MiB.
[Tue Jul 28 03:29:48 2015 GMT] memory footprint: 187.79 MiB.
[Tue Jul 28 03:29:48 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:48 2015 GMT] log files enabled
[Tue Jul 28 03:29:48 2015 GMT] memory footprint: 190.17 MiB.
[Tue Jul 28 03:29:50 2015 GMT] memory footprint: 187.82 MiB.
[Tue Jul 28 03:29:50 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:50 2015 GMT] log files enabled
[Tue Jul 28 03:29:50 2015 GMT] memory footprint: 188.95 MiB.
[Tue Jul 28 03:29:51 2015 GMT] memory footprint: 187.84 MiB.
[Tue Jul 28 03:29:51 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:51 2015 GMT] log files enabled
[Tue Jul 28 03:29:51 2015 GMT] memory footprint: 190.21 MiB.
[Tue Jul 28 03:29:52 2015 GMT] memory footprint: 187.84 MiB.
[Tue Jul 28 03:29:52 2015 GMT] Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
[Tue Jul 28 03:29:52 2015 GMT] log files enabled
[Tue Jul 28 03:29:52 2015 GMT] memory footprint: 188.10 MiB.

//编辑2:

似乎出于某种奇怪的原因,它每晚午夜时分都会开始记录奇怪的启动事件。我昨晚将其作为服务启动,Tue, 28 Jul 2015 19:31:22 GMT: start直到午夜它都运行正常。稍后将通过更改系统日期并在作为正常应用程序运行时对其进行测试。

另外,忘记提到根本没有定义 cronjobs,以防其中任何一个可能会干扰 g-wan。

//编辑3:

我曾尝试在 g-wan 作为服务和普通应用程序运行时手动更改系统日期(在此之前也禁用了 ntp 服务),但似乎 g-wan 无法识别这些更改,因为存储 gwan.log 的文件夹中没有日志轮换。此外,跟踪日志中也没有新条目。

所有这些都使我认为问题可能与 ntp 服务有某种关系,但这仍然不能解释为什么它只在午夜发生,而 ntp 服务会更频繁地更新系统时间。

//编辑4:

这是上次启动 Web 服务器时的硬件检测部分(IP 地址和域名已更改)。服务器是用 启动的service gwan start,不过我猜如果我用 启动它,日志条目应该是一样的./gwan

[Wed Jul 29 11:37:56 2015 GMT] ------------------------------------------------
[Wed Jul 29 11:37:56 2015 GMT] G-WAN 4.3.14 64-bit (Mar 14 2013 07:33:12)
[Wed Jul 29 11:37:56 2015 GMT] ------------------------------------------------
[Wed Jul 29 11:37:56 2015 GMT] Local Time: Wed, 29 Jul 2015 11:37:56 GMT+0
[Wed Jul 29 11:37:56 2015 GMT] RAM: (474.11 MiB free + 0 shared + 92.90 MiB buffers) / 993.92 MiB total
[Wed Jul 29 11:37:56 2015 GMT] Physical Pages: 474.11 MiB / 993.92 MiB
[Wed Jul 29 11:37:56 2015 GMT] DISK: 15.65 GiB free / 19.70 GiB total
[Wed Jul 29 11:37:56 2015 GMT]  Filesystem     Type      Size  Used Avail Use% Mounted on
[Wed Jul 29 11:37:56 2015 GMT]  /dev/vda1      ext3       20G  4.1G   15G  22% /
[Wed Jul 29 11:37:56 2015 GMT]  none           tmpfs     4.0K     0  4.0K   0% /sys/fs/cgroup
[Wed Jul 29 11:37:56 2015 GMT]  udev           devtmpfs  487M  4.0K  487M   1% /dev
[Wed Jul 29 11:37:56 2015 GMT]  tmpfs          tmpfs     100M  372K  100M   1% /run
[Wed Jul 29 11:37:56 2015 GMT]  none           tmpfs     5.0M     0  5.0M   0% /run/lock
[Wed Jul 29 11:37:56 2015 GMT]  none           tmpfs     497M     0  497M   0% /run/shm
[Wed Jul 29 11:37:56 2015 GMT]  none           tmpfs     100M     0  100M   0% /run/user
[Wed Jul 29 11:37:56 2015 GMT] 80 processes, including pid:2542 './gwan -d'
[Wed Jul 29 11:37:56 2015 GMT] Page-size:4,096 Child-max:7,780 Stream-max:16
[Wed Jul 29 11:37:56 2015 GMT] CPU: 1x Virtual CPU e7da7129d3ee
[Wed Jul 29 11:37:56 2015 GMT]  0 id: 0     0
[Wed Jul 29 11:37:56 2015 GMT] Cores: possible:0 present:0 online:0
[Wed Jul 29 11:37:56 2015 GMT] L1d cache:   32K line:64     0
[Wed Jul 29 11:37:56 2015 GMT] L1i cache:   32K line:64     0
[Wed Jul 29 11:37:56 2015 GMT] L2  cache: 4096K line:64     0
[Wed Jul 29 11:37:56 2015 GMT] NUMA node #1 0
[Wed Jul 29 11:37:56 2015 GMT] CPU(s):1, Core(s)/CPU:0, Thread(s)/Core:2
[Wed Jul 29 11:37:56 2015 GMT] Bogomips: 4,799.99
[Wed Jul 29 11:37:56 2015 GMT] Hypervisor: KVMKVMKVM
[Wed Jul 29 11:37:56 2015 GMT]   using   1 workers 0[1]0
[Wed Jul 29 11:37:56 2015 GMT]   among   2 threads 0[]1
[Wed Jul 29 11:37:56 2015 GMT] 64-bit little-endian (least significant byte first)
[Wed Jul 29 11:37:56 2015 GMT] Ubuntu 14.04.2 LTS \n \l (3.13.0-58) 64-bit
[Wed Jul 29 11:37:56 2015 GMT] user: root (uid:0), group: root (uid:0)
[Wed Jul 29 11:37:56 2015 GMT] system  fd_max: 1,024
[Wed Jul 29 11:37:56 2015 GMT] program fd_max: 1,024
[Wed Jul 29 11:37:56 2015 GMT] updated fd_max: 500,000
[Wed Jul 29 11:37:56 2015 GMT] Available network interfaces (2):
[Wed Jul 29 11:37:56 2015 GMT] 127.0.0.1
[Wed Jul 29 11:37:56 2015 GMT] 1.2.3.4
[Wed Jul 29 11:37:56 2015 GMT] memory footprint: 1.33 MiB.
[Wed Jul 29 11:37:56 2015 GMT] Host /opt/gwan/0.0.0.0_80/#domain.com
[Wed Jul 29 11:37:56 2015 GMT] log files enabled
[Wed Jul 29 11:37:56 2015 GMT] memory footprint: 3.93 MiB.

//编辑5:

今晚我让它作为正常进程运行(使用./gwan),午夜时分没有任何问题,所以问题可能出在守护进程模式上。

我想,如果服务模式没有修复的话,我可以在启动时使用 cron 以这种方式运行它。

答案1

CPU: 1x Virtual CPU e7da7129d3ee
[Wed Jul 29 11:37:56 2015 GMT] Cores: possible:0 present:0 online:0
CPU(s):1, Core(s)/CPU:0, Thread(s)/Core:2
Hypervisor: KVMKVMKVM
using   1 workers 0[1]0
among   2 threads 0[]1

别再犹豫,有一天 KVM 管理程序可能会通过正确更新 /proc/sys 内核变量来实现 CPU 虚拟化……

与此同时,KVM 将破坏每个multicore应用程序,如 G-WAN。

“修复”方法是像这样运行 G-WAN:# ./gwan -g -w 1 -d

尽管系统信息虚假,这仍将强制使用 1 个 CPU 核心。

相关内容