我有一个 VPS,它有 512 MB 的专用内存,并且最高可达 1GB。
我最近安装了 nginx,发现内存使用量激增。使用 Apache 时,内存使用量约为 170MB。使用 nginx 时,内存使用量约为 350-400MB。
我通过 SSH 运行了“top”命令,但没有返回任何使用大量内存的信息。MySQLD 似乎是唯一一个内存使用率最高的,为 3%。
是什么原因造成的?
答案1
你可能会发现你的内存被用作缓冲区/缓存,看看Linux 占用了我的内存。
答案2
正如 womble 指出的那样,这可能是一种操作系统级别的虚拟化(Virtuozzo、OpenVZ、lxc 等),这意味着所有用户都使用一个内核;“虚拟化”只是意味着你无法在同一台(真实)机器上看到其他用户的进程。
由于 Apache (仍然) 比 nginx 更受欢迎,因此可能其他人也在同一台主机上运行它。这意味着内核可以共享很大一部分内存。实际上,加载一次即可运行两次。
如果该主机上没有其他人运行 Nginx,您将失去这一优势,并且内核必须专门为您加载它,并且它会显示在您的 RAM 预算中。
话虽如此,我不认为 nginx 二进制代码这么大(180+ MB);其中大部分似乎是配置中的一些慷慨的分配。