跳至正文

解决方案 · WordPress

WordPress 到底需要多大的 VPS?

通常比别人卖给您的少。缓存页面不会到达 PHP,所以内存决定的是同时运行多少个未缓存请求,而不是您能有多少访客。下面是具体的账、没人写出来的流量问题,以及我们自己会买的机器:BD-8,每月 $12.90。

主机商不提的部分

为什么有了缓存答案就很小

几乎所有 WordPress 主机套餐都以内存为卖点。而在有缓存的网站上,先耗尽的并不是内存。

缓存请求

Web 服务器找到一个现成的 HTML 文件并发送出去。PHP 不启动,数据库不打开。只需几毫秒,几乎不占内存,而您的大多数访客得到的正是这种响应。

未缓存请求

一个 PHP worker 启动,加载 WordPress 和您的插件,查询数据库并生成页面。在此期间它占用 48–96 MB。内存真正用在的就是这种请求。

无法缓存的内容

购物车、结账、登录,以及任何个性化内容。正因如此,网店与博客的规格选择是两回事,而这正是值得为内存多花钱的情形。

算一笔账

一个套餐实际能容纳多少个 PHP worker

worker 数 = (RAM − 操作系统 300 MB − 数据库 400 MB) ÷ 单个 worker 占用的内存。两列分别对应轻量主题和重型主题;您自己的网站介于两者之间,常见问题中说明了如何实测而非猜测。

各套餐的 PHP-FPM worker 容量和每月流量额度,附实时价格
套餐RAM轻量主题重型网站流量价格部署
VPS-1博客、作品集、宣传型网站1 vCPU · 1 GB · 25 GB1 GB631 TB$9.90部署
BD-8繁忙的网站、网店、一台服务器上的多个网站4 vCPU · 8 GB · 100 GB8 GB1567832 TB$12.90部署
GL2-4希望留有余量的单个网站2 vCPU · 4 GB · 40 GB4 GB7035不计流量$11.90部署
U2-4-40流量无法预测的网站2 vCPU · 4 GB · 40 GB4 GB7035不计流量$14.90部署

一个渲染页面需要 200 ms 的 worker 每秒可处理五个请求。四个 worker 就是每秒二十个未缓存请求才会有人排队,而对于有缓存的网站,这已经是相当大的流量。这些不是基准测试,而是算账,其中的数字请替换为您自己的。

没人会标出来的数字

决定套餐的往往是带宽,而不是内存

页面大小 × 浏览量。整个公式就这么简单,在按 RAM 选择之前值得算一算。

三种页面大小在一万、十万和一百万次浏览量下的每月流量
页面大小10,000 次浏览/月100,000 次浏览/月1,000,000 次浏览/月
轻量博客页面0.8 MB8 GB78 GB781 GB
典型的 WordPress 页面2.5 MB24 GB244 GB2.4 TB
图片较多的网店页面5 MB49 GB488 GB4.8 TB

购买不计流量之前请先读这里

大多数 WordPress 网站离流量额度还差得远。BD-8 以 $12.90 包含 32 TB,足够一个普通页面被浏览一百万次还绰绰有余。因此,只有当一次真实的流量高峰本会让您多付的费用超过差价时,不计流量产品线才值得多花钱。如果您的流量以图片和视频而非文字为主,请在选择前用您自己的页面大小算一遍上面的账,因为这正是流量额度用完而内存还闲着的情形。

说实话

我们实际会买哪台

两个答案,都不是本页最贵的机器。

入门

VPS-1 · $9.90/月

1 核、1 GB、25 GB SSD。前面加一个缓存插件,它就能妥善运行博客或企业展示网站,花费比选错一年的代价还少。如果最后发现太小,您会察觉到,因为网站在高负载下会变慢而不是崩溃,而升级只是复制一下文件。

我们自己会买的配置

BD-8 · $12.90/月

4 核、8 GB、100 GB SSD、32 TB 流量,价格低于 C4-8-150,后者核数和内存相同,流量为 4 TB。这个取舍确实存在,我们直说:该平台针对密度而非主频优化,因此单个重型请求可能比在密度较低的主机上运行得慢。对于 WordPress 来说,工作负载是大量小请求而非单个重型请求,这是正确的取舍。

常见问题

购买前大家常问的问题。

WordPress 需要多少 RAM?
如果网站做了缓存,需要的比别人告诉您的少。缓存页面是 Web 服务器直接从磁盘发送的文件:PHP 不启动,数据库也不被访问。因此,在大多数访客看到缓存页面的网站上,RAM 决定的是同时能运行多少个未缓存请求,而不是您能有多少访客。这就是为什么 1 GB 的机器能运行一个真实的博客:操作系统和数据库占用大约 700 MB 之后,剩下的内存仍能运行几个 PHP worker,而当十个请求中有九个根本不会到达 PHP 时,几个就够了。RAM 真正起决定作用的是网店或会员网站,因为购物车、结账和登录会话无法缓存,每一个都是实时的 PHP 请求。
一台小型 VPS 能承载多少访客?
老实说,没人能从外部告诉您,因为这取决于您有多少请求被缓存,以及一个未缓存请求需要多长时间。我们能给您的是这笔账:worker 数 = (RAM − 操作系统 300 MB − 数据库 400 MB) ÷ 单个 PHP worker 占用的内存,而一个耗时 200 ms 的 worker 每秒可处理五个请求。相乘,并且往保守里算。然后实测:按小时部署一台机器,用您自己的插件对您自己的网站做压力测试,测完销毁机器。这只花几美分,比本页任何估算都靠谱,包括我们的。
流量和内存,哪个更可能先用完?
是带宽,比人们预想的更常见,而几乎没有主机商会把这个数字标在套餐旁边。一个典型的 WordPress 页面约 2.5 MB,因此十万次页面浏览大约是 244 GB,绰绰有余。一百万次约为 2.4 TB,超过了好几个内存仍很充裕的套餐的流量额度。这正是本页列出流量额度一栏的原因:BD-8 含 32 TB,C4-8-150 含 4 TB,对于媒体较多的网站,这个差别比核数更重要。
我需要托管 WordPress 主机吗?
只有当您不想自己做更新时才需要。VPS 只给您 root 权限,别无其他:您自己安装 WordPress、自己打补丁、自己做备份,插件在凌晨 2 点把网站搞坏时也由您负责。这样更便宜、更灵活,也确实更费工夫。如果您不想做这些事,我们有托管档位,我们宁愿把您引导过去,也不愿卖给您一台您不会维护的机器。未打补丁的 WordPress 是互联网上最容易被入侵的东西。
WordPress 和 MySQL 应该放在同一台服务器上吗?
对于单个网站,是的,几乎总是如此。拆分会给每次查询增加一次网络跳转,还要多维护一台机器,换来的余量您很可能还用不上。当数据库确实成为瓶颈且您已经测量证实时,或者当您运行多个负载够重、需要隔离数据库的网站时,再拆分。如果您确实要拆分,我们的托管数据库产品线会为您运行 PostgreSQL 和 MySQL,这是另一种取舍:花更多钱,省下您更多的晚上。
服务器应该放在哪个区域?
离您的读者最近的区域,而不是离您最近的。距离是决定页面多久开始加载的因素之一,读者在欧洲的网站最好放在欧洲,即使您本人不在欧洲。如果读者分布很广,就把服务器放在最大读者群附近,并在静态文件前加一层 CDN,这正是 CDN 真正擅长的。我们在多个区域提供服务,每个套餐页面都列出了它实际可以搭建的区域。
我能把现有网站迁移到这些服务器上吗?
可以,这只是复制文件和导出数据库,并非什么特殊产品。任何常用的迁移插件都能完成,如果您想弄清楚具体过程,也可以用 rsync 和 mysqldump 手动迁移。测试副本期间按小时部署新机器,满意后将域名指向它,再销毁旧机器。重叠期只花几美分,而且回滚只需"把 DNS 改回去"。