[建站基础系列] 02. 主机配置选择和性能估算

上文介绍了如何选择云计算服务商,由于阿里云的可玩性比较强,加上的确比较适合真心做站的同学,所以本系列的文章,将在阿里云服务器的基础上进行介绍。

首先贴一个阿里云ECS的购买幸运券,据说在PC购买的时候可能会有优惠,有需要的同学请自行领走:点击领取阿里云优惠券>>

站点性能评估和ECS硬件规格选择

站点性能评估这个其实挺难的,很难评估得很准确,因为这个跟业务形态、流量模型等都有很大关系。不过对于博客站点来说,则可能简单很多。直接跟大家说买几核几G内存,估计大家也没什么概念,这里从几个常见博客方案来举例说明。

最简单个人博客

什么是最简单的个人博客?就是我们安装了Typecho或者Wordpress,挂少量插件MySQL安装在本地,平时自己写写博客,每日大概100UV左右。

一般阿里云的最低配置就可以满足这样的场景。1核512M内存的实例基本上都不会有什么问题。

[建站基础系列] 02. 主机配置选择和性能估算

这里首先引出CPU的选择原则。一般情况下,单核CPU的性能足够一般的场景,这个不用质疑,纯粹的网站,从来就不是计算密集型,所以在CPU核数选择上基本不用纠结,哪个最低配置就选哪个。

需要优化访问速度的爬虫站

假设我们要做个资讯聚合站(说得不好听就是爬虫垃圾站,呵呵),预计需要支持50w的页面,并且保证用户或者爬虫正常访问不受影响。

假设资讯数据放在本地MySQL数据库中;数据做了全文索引,方便站内搜索;站点做了页面静态缓存,加快访问速度;日访问UV大概1000,PV大概2000。

首先我们评估CPU。还是上文的原则,这种站也不是计算密集型网站,CPU继续选1核足够。

接着我们评估内存。这样的爬虫站点,在数据插入(爬虫将数据从其他新闻源爬过来之后,插入到本站数据库中)的时候,会做全文索引和普通索引,这部分操作需要较大的内存,另外MySQL查询的时候,内存越大,缓存空间越大,网页性能表现就越好。因此我们可以选择1G到2G的内存,建议先上1G,不够再升级2G。

最后是磁盘的评估。本站占用磁盘空间主要有两个地方:MySQL数据(数据和索引)以及静态化缓存文件。

假设一个页面数据大概10K大小,那么50w页面存入数据库,可能需要用到2G的数据表(MYD有压缩)以及6G的索引(MYI保守估计可能是MYD的3倍左右);如果所有页面均缓存成静态页面,那么大概需要4G的空间;再考虑预留30%左右的空闲空间用于突发情况,譬如数据库坏了可能需要较多临时空间用于数据库修复。综合这几种情况考虑,选择30G以上磁盘,基本可以满足爬虫站的需求。

小结下,对于数据密集型的网站,优先考虑内存和磁盘空间。内存过小可能会导致MySQL不能正常工作,而磁盘空间除了考虑实际存储,还需要额外考虑预留足够空间进行MySQL数据库维护。

需要优化访问体验的图片站

这里又假设我们要做个图片站,预计日均PV到达1w。其实这种站没有很大的估算意义,图片站基本上都是将图片外放到CDN了,不会放在本站,但作为一个比较常见的站点类型,我们假设图片放在本地,然后说明下性能估算可能需要考虑的方面。

首先是内存和磁盘的估算,具体估算方法可以参考上文。磁盘需求计算方法见上,主要弄清楚自己大概有多少图片,每张图片平均占多大空间,基本就可以估算出来,这个没有太大的技巧性。而内存方面,如果这个站需要对图片进行处理(譬如裁剪、加水印),那么就可能需要较大的内存。任何程序对图片进行处理的时候,可能会出现内存剧烈波动,所以我们需要预估足够多的内存用于图片裁剪或者加水印。

图片处理操作属于计算密集型,如果单核CPU处理不过来,则需要使用更多的核数。不过核数不好估算,如果阿里云物理机的CPU强,那么你可能单核就能够应付得来,但如果阿里云物理机CPU运算能力本身就不够,你就需要增加ECS的核数。

带宽评估见下文。

业务量更大的站点

如果你的业务量更进一步,基本上就不需要考虑单机性能瓶颈了。这种情况下,通过多机组群的方式,可以更加方便平滑扩展计算性能。这个在本系列文章最后会详细说到。

带宽评估

因为阿里云带宽升级是无缝的,所以带宽方面一般不需要太纠结,初期选择最低带宽即可。当业务量上去,出现带宽瓶颈时,直接升级带宽即可。

另外静态资源尽可能走CDN,CDN的带宽成本比阿里云带宽成本低很多。

系统选择

首先申明,本文无意对比系统优劣,各个系统有不同的适用场景,请各位看官不要激动哈。

购买阿里云ECS的时候,阿里云提供了各种Windows和类Linux系统镜像可选择。

[建站基础系列] 02. 主机配置选择和性能估算

一般情况下,我们都选择类Linux镜像作为站点的OS,除非你有特殊需求,否则不建议用Windows。Windows是可视化操作,可能对于新手来说上手简单,但实际上维护成本、硬件成本(可能需要2核2G内存才能达到Linux 1核512M内存的性能)都很大,所以请直接无视Windows Server。

Ubuntu/Debian

Ubuntu是基于Debian的一个Linux发行版,是目前最流行的Linux发行版之一。对于新手来说,建议选择Ubuntu作为你的OS镜像。

Ubuntu的主要有点包括:软件丰富、配置简单、社区非常活跃文档非常丰富。

Ubuntu使用dpkg来管理软件包,大部分软件都可以通过apt-get来进行在线安装,而无需自己编译。这个对于大部分新同学来说,是极大的方便。

如果你是通过apt-get方式来安装的软件,其软件配置基本上都是统一的风格,这对于团队合作来说非常有好处。约定优于配置(convention over configuration),在Ubuntu上也适用。譬如软件的配置都约定了放在/etc/下,譬如nginx配置位于/etc/nginxapache配置位于/etc/apache2/

又譬如nginx配置组织方式,将sites-availablesites-enabled分离,如果想临时启用或者停用某个站点,不需要去修改nginx.conf,只需要添加或者删除sites-enabled中的软链即可。这种配置风格个人非常喜欢。

/etc/nginx/
├── conf.d
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── nginx.conf
├── proxy_params
├── scgi_params
├── sites-available
│   └── default
├── sites-enabled
├── snippets
│   ├── fastcgi-php.conf
│   └── snakeoil.conf
├── uwsgi_params
└── win-utf

Ubuntu的文档资料也非常丰富,基本上遇到问题,google一下就能得到答案。并且各第三方软件对Ubuntu的文档支持都非常好,基本上都会有ubuntu的安装例子,譬如certbot:

[建站基础系列] 02. 主机配置选择和性能估算

当然,Ubuntu也有缺点,最大的问题是更新太快[捂脸]。。。每个LTS版本之间,可能很多地方都不兼容,这个比较麻烦。

譬如Ubuntu14.04中默认PHP版本是5.7,Ubuntu16.04中则变成了7.0,而且Ubuntu16.04如果想安装5.7,还非常麻烦。如果你的站点想迁移到新主机上去,如果跨了ubuntu版本,可能这此迁移将变成一个非常头疼的事情。

CentOS

CentOS 实质上就是无支持版的 RHEL。Redhat 系在公司非常普及,很大原因是早年国内 Linux 图书几乎全都是以 RH 系“为例”教学的,所以国内玩CentOS的同学也非常多。

CentOS现对于Ubuntu/Debian来说,因为常年不更新,所以稳定性好很多。但也由于需要顾及稳定性,所以CentOS仓库上的软件一般都比较旧,如果要安装新软件,很多时候都需要自己下载源代码进行编译。

网上找了两张CentOS和Debian软件仓库的对比图,可以看出CentOS的软件版本的确很旧。

[建站基础系列] 02. 主机配置选择和性能估算

上图是CentOS,下图是Debian。

[建站基础系列] 02. 主机配置选择和性能估算

总的来说,CentOS在国内使用非常广泛,尤其在公司中,绝大部分都是使用或者基于CentOS的系统。CentOS的最大特点是稳定,但要玩的溜,需要你具备很强的动手能力。

SUSE/AliyunOS等

其他用得不多,笔者没有发言权,这里就不展开说明了。

小结

总的来说,对于新同学,或者用于个人业务(非公司业务),或者在日常维护过程中不想惹麻烦的同学,建议使用Ubuntu。如果觉得Ubuntu更新太频繁,不够稳定,可以使用Debian。如果在公司习惯了Redhat或者CentOS,则可以选择CentOS,毕竟熟悉才能最大效率。

注意事项

这里列举一些选择系统镜像的时候可能需要注意的点。

  • 因为32 位操作系统存在寻址限制,所以,如果使用了 32 位操作系统,那么只能选择4G以下的内存。即使你购买的规格大于4G内存,大于4G内存部分也是浪费的。
  • Windows 32 位操作系统支持最高 CPU 数为 4 核,多了无法识别。
  • 将 Windows 实例用于建站、部署 Web 环境,可能需要至少 2 GB 内存。1 核 1 GB 实例规格可能无法启动 MySQL

版权声明:未经书面授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。