我已成功配置 nginx 来为 WordPress 博客(位于 example.com/blog)和 Rails 应用提供服务。我的堆栈如下:
Ubuntu 10.04、ngninx、unicorn(用于 Rails 应用程序的 1 个工作进程)、spawn-fcgi(用于 PHP 和 WordPress)和 PostgreSQL。
我的问题很简单。上述需要多少内存?目前我有 256mb,完全专用于此应用程序。我的 postgres 进程已经崩溃过一次,所以恐怕我需要更多。我有什么办法可以优化它吗?有什么想法吗?
我应该说一下,我是一名开发人员,对服务器管理完全陌生。这是我第一次尝试将 Rails 应用程序部署到非托管 VPS。
编辑:以下是一些当前的统计数据。
$ 免费-m 已使用的、可用的、缓存的共享缓冲区总数 内存:256 168 87 0 0 0
$ ps aux # => 仅突出显示 用户 PID %CPU %MEM VSZ RSS TTY STAT 开始时间命令 deployer 2014 0.0 6.4 21676 16880 ? Sl Apr29 0:00 unicorn master -D -c /home/deployer/apps/dailyshimmer_v 部署者 2017 0.0 29.6 86112 77856 ? Sl 4月29日 0:12 unicorn worker[0] -D -c /home/deployer/apps/dailyshimme postgres 5539 0.0 2.5 43304 6624 ? S 03:47 0:00 /usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgr postgres 5541 0.0 0.8 43304 2116 ? Ss 03:47 0:05 postgres:写入器进程 postgres 5542 0.0 0.4 43304 1264 ? Ss 03:47 0:04 postgres:wal 写入器进程 postgres 5543 0.0 0.9 44136 2372 ? Ss 03:47 0:01 postgres:自动清理启动器进程 postgres 5544 0.0 0.5 13900 1352 ? Ss 03:47 0:01 postgres:统计收集器进程 root 12074 0.0 0.4 8724 1096 ? Ss Apr29 0:00 nginx: 主进程 /usr/sbin/nginx www-data 12075 0.0 0.8 9224 2240 ? S Apr29 0:00 nginx: 工作进程 根 30334 0.3 8.3 43600 21812 ? Ss 00:52 1:08 /usr/bin/php-cgi
答案1
我认为扩展到 512mb 并不不合理。应用程序在 256mb 上应该可以很好地运行,但多个并发请求会对您造成损害,并且您还需要为数据库和系统上的其他所有内容留出一些空间。如果 postgres 由于缺少 RAM 而崩溃(您没有说这是问题所在),您绝对应该扩展 RAM。
您可以做很多优化。其中一件事就是同时优化您的 Rails 应用程序和 Wordpress 设置,以最大化浏览器端缓存并减少应用程序收到的请求数量。(“最快的 HTTP 请求是不会发出的请求。”)
答案2
在当今时代,在 256MB RAM 上运行数据库服务器是闻所未闻的。我不会在少于 1GB 的 RAM 上运行 Linux/nginx/Postgres/PHP 堆栈。更糟糕的是,您想运行 Ruby 应用程序,而 Ruby 并不以内存节约而闻名。
拥有较少的 RAM 是一种错误的节约,因为您将浪费更多时间等待 VPS 响应。从技术上讲,它可能启动了所有这些进程,但它们的运行效果会很糟糕。较少的 RAM 意味着您的 Postgres 实例无法将表缓存到 RAM 中,并且这些缓存未命中将表现为几乎无法使用的应用程序。
担心所有这些事情真的值得你节省那么多钱吗?