服务器硬件选型是Linux性能调优的第一步。
无论你是自行购买服务器进行托管,还是租用服务器,购买云主机,都要面临的一个问题:选择服务器的硬件配置。
我们需要从不同角度、多个方面来决定选择一台什么样的服务器,找到满足技术需要、业务发展和成本控制之间的最佳平衡点。
那么接下来,我们就来谈谈如何进行硬件选型。
— 1 —
我们要根据服务器的用途,来决定服务器的性能、容量和可靠性需求。
这里我们按照最典型的基础架构:Web服务器、数据服务器、应用程序服务器来展开讨论。
·Web服务器·
Web服务器对硬件要求不高,甚至一般的硬件配置(2颗4核、8G内存、1T硬盘)即可满足需求,如果后期Web服务访问量上升,只需要新增同等配置的服务器加入负载均衡集群即可实现Web服务的性能扩展。
·数据服务器·
数据服务器对硬件要求最高,主要特征是CPU要足够快、内存足够大,磁盘IO足够快和稳定。比如:MySQL、Oracle服务器要求CPU配置一定要好,最好是双路志强金牌Gold,磁盘最好使用SSD系列。而Redis服务器主要是内存型应用,所以要求内存一定要足够大,并且可扩展,而对磁盘和CPU要求就没那么高。
·应用程序服务器·
应用服务器的典型特征是承担了计算和功能实现。对CPU的配置,至少是双路志强银牌Silver系列。对于可靠性问题,如果你只有一台服务器的话,那么这台服务器必须足够可靠,磁盘做成RAID1阵列是必不可少的。
·其它公用服务器·
还有一些公用的服务器,例如邮件服务器、DNS服务器、域控服务器。对稳定性要求较高,因此一般会推荐有至少两台进行主、备部署。对硬件来说,没有特殊的需求,所以一般的硬件即可。
— 2 —
硬件服务器是为了提供某种服务,而使用这些服务的用户有多少,也是我们需要考虑的因素,有几个具体的问题需要我们做出评估:
预估有多少用户会同时在线访问?
预估每天同时在线访问的最高峰值大概是多少?
预估数据量会有多大?
预估网络带宽会占用多少?
我们需要从两个角度来考虑这个问题。一个角度是有哪些类别的数据,另一个角度是数据的增长速度,例如每天大概会新增多少数据,根据这个增速,就可以规划出未来1-3年内数据量大小。最后我们才能得到一个更具体的数字,还需要为计算出来的数字结果乘1.5左右的系数。
服务器可以为不同业务系统提供各种应用服务,这个重要性直接影响到我们对服务器的选型配置。
·门户网站·
一台服务器,铜牌Bronze 单路cpu、4G内存、500GB足够了,并且也不需要备机,就算服务器出现了一点硬件故障,导致几个小时甚至一两天不能提供访问,工作也会照常继续,天也不会塌下来。对公司也影响不大。
·测试平台·
如果仅仅做功能测试,那么对硬件配置基本没要求,虚拟机也可以满足要求,而如果是做性能测试,那么就根据性能测试的方向,选择某方面比较强劲的硬件即可。
·电商平台·
CPU要足够好,内存也要足够大,磁盘一定要做RAID10。同时,还要部署主、备架构,数据要做实时备份、异地远程备份,因为重要的业务系统,一旦发生故障,直接导致的损失就是金钱。
CPU的主频越高,其性能也更高;两个CPU要比一个CPU来得更爽;说到品牌,也就是Intel和AMD,Intel服务器市场份额更高一些。要选CPU,一个特征是选购最新的,那就没错了。常见情况:
·公司业务刚起步·
量不大的情况下,此时预算可能也不是很充足,那么建议选择一个英特尔至强铜牌单路CPU即可,但是记得要留扩展接口。
·跑多个服务·
比如apache+php+tomcat+mysql架构,都运行在一台机器上,那么,推荐英特尔至强银牌双路CPU,这将是一个不错的选择。
·运行MySQL/Oracle·
那么至少应该选择一个英特尔至强金牌双路10核CPU,并且预留CPU扩展接口,当负载越来越大的时候,可以选择增加CPU到四路。
相比于CPU,内存(RAM)其实是影响性能的最关键因素,很多业务系统CPU利用率一般都在10%~50%之间,甚至更低。
·Web前端服务器·
例如apache、nginx。不需要太大的内存,因为这些Web服务器主要是处理静态请求,一天几十万的访问量,4GB内存已经足够了。
·java重型应用服务器·
比如Tomcat、Resin、WebLogic、Websphere、jboss等此类。配置的内存在16GB-32GB之间即可,大于32GB的内存配置基本是浪费了。
·内存型业务系统·
例如redis、Squid、Varnish、Memcached等,我们需要为服务器配置尽可能高的内存容量,因为这类应用主要消耗的就是内存。
硬盘存储系统的选择和配置是整个服务器系统里最为复杂的一部分,我们需要考虑硬盘的数量、容量、接口类型、转速、缓存大小,以及是否需要Raid卡,Raid卡的型号和Raid级别等问题。
·磁盘类型·
目前有SATA、SAS和SSD三种类型,SATA、SAS属于机械硬盘,转速低,读写速度慢,但是价格便宜,磁盘容量大。SSD硬盘属于固态硬盘,优点是读写速度快,缺点是价格昂贵。
·RAID·
主要分为软RAID、硬RAID二种。软RAID所有功能均有操作系统和CPU来完成,没有独立的RAID控制器处理芯片和I/O处理芯片,效率最低。硬RAID配备了专门的RAID控制器处理芯片和I/O处理芯片以及阵列缓冲,不占用CPU资源。
最后,再来谈一下网卡的选型,网卡和服务器的网络带宽互相影响,这里我们从网卡的速率和网卡的冗余两个方面来进行分析。
·网卡的速率·
到底是选用千兆网卡呢,还是选择万兆网卡呢,这主要取决于我们对带宽流量的评估。大多数情况下,千兆网卡足够用来对外网提供服务,而内部数据交换如果非常频繁,例如hadoop业务,建议使用万兆网卡。
·网卡的稳定性·
对网络稳定性要求高,推荐双网卡做冗余,两个网卡连接到不同的交换机上,这样,任意一个网卡故障都不影响业务的正常运行。