即使禁用 I/O 缓存后,Cherokee 虚拟内存使用率仍然很高

即使禁用 I/O 缓存后,Cherokee 虚拟内存使用率仍然很高

我在 openvz 容器上运行 64 位 Ubuntu 10.04LTS,并从源代码编译了 Cherokee 1.0.8。即使在从“高级”->“I/O 缓存”->“未启用”禁用 I/O 缓存后,cherokee-worker 的虚拟内存使用量仍然约为 430 MB。

这是 openvz 独有的问题吗?因为很多人报告说通过禁用 io 缓存成功减少了 virt 内存使用量。

htop 输出: https://i.stack.imgur.com/akLcf.jpg (新手禁止发图片。)

提前致谢。

尼德希什达斯

答案1

其中至少有一部分是堆栈分配 (RLIMIT_STACK),分配给 cherokee 的每个线程... 而 cherokee 会产生很多线程。这些内存实际上并未使用,仍然可用,因此通常无关紧要,但使用 OpenVZ 时,它们将计入您的配额,因此您需要在 OpenVZ VPS 上将其保持在较低水平。我甚至无法在我的 256MB VPS 上以默认配置启动 cherokee,因为 OpenVZ 认为它在启动时使用的可用内存超过了 210MB。

您可以在 Web 配置中的 Advanced->Resources 下减少 cherokee 使用的线程数(如果您直接编辑 cherokee.conf,则设置为“server!thread_number = XX”),或者您可以在运行 cherokee 之前使用“ulimit -s SIZE_IN_KB”更改堆栈大小(您可以在使用“ulimit -s”更改之前查看默认值 - 我的 VPS 默认为 10240,每线程 10MB)。请记住,您需要在运行 cherokee 之前设置 ulimit,并且它不是系统范围的。因此,要么在从同一 shell 启动 cherokee 之前在 shell 中执行此操作,要么编辑启动脚本以在启动 cherokee 之前运行“ulimit -s XX”。

让 VPS(尤其是低端 VPS)正常运行的一个很好的资源是 LowEndBox。他们有一篇博客文章介绍如何“减少多线程应用程序的堆栈限制“。

答案2

内存被 php5-fpm 进程占用,而不是 cherokee。您正在运行胖 php 应用程序吗?

相关内容