我正在尝试配置 LAMP 服务器。实际上我选择了 Nginx,但我想这与主题无关。该服务器将用作 wordpress 主机。我计划使用 APC 完全缓存页面(APC 对象缓存后端和 Batcache 插件)。
我的问题不是关于机器中安装的 RAM 数量,而是关于分配给 LAMP(或 LEMP)服务器每个组件的 RAM 比例。我之所以问这个问题,是因为我发现的有关内存配置的每篇文章都说了同样的话:
- 将所有可用内存分配给<在此处输入组件名称>
我有以下争夺 RAM 的组件:
- Nginx
- php-fpm
- Percona MySQL
- 亚太经合组织
有一些东西告诉我让这些进程竞争内存不是一个好主意。它们需要知道自己的极限。
我理解实际的内存分配可能取决于网站的使用情况,但是对于初学者来说是否有一个比例?例如,将 20% 分配给 MySQL,40% 分配给 APC,20% 分配给 php-fpm,其余的留给系统?
答案1
好的,首先,你通常不会为组件“分配”RAM。进程要求RAM(通常通过malloc()
或类似方式),操作系统的内核根据可用资源批准或拒绝请求。
内核还会判断您是否没有足够的 RAM 并需要使用交换空间来伪造它,或者程序是否请求了一大堆它没有主动使用的 RAM(可以将其转储到交换中以释放更多实际物理 RAM)。
现在,一些程序(例如数据库服务器、缓存服务器等)允许您猜测它们应该请求多少 RAM。如果您要问的是这个,那么正确的答案是“它们需要多少 RAM 才能在您的工作负载上实现最佳性能”。
您如何知道每个组件需要多少 RAM 才能达到最佳性能?
负载测试和容量规划!-- 你测试您的环境在你的工作量,并确定瓶颈在哪里,然后进行调整,直到性能达到您想要的水平。
唯一的经验规则是“从默认配置开始并根据需要进行修改”。