一、网站架构相关
(1)评估网站性能涉及的专业名词术语
1.PV(Page View)
PV即访问量,中文翻译为页面浏览,代表页面浏览量,用户每刷新一次就会计算一次。PV的具体计算方法是:从浏览器发出一个对网络服务器的请求(Request),网络服务器接到这个请求后,会将该请求对应的一个页面(Page)发送给浏览器,从而产生一个PV。
2.UV(Unique Visto)
UV即独立访问,访问网站的一台电脑客户端为一个访客,如果按天计算,程序统计会从0:00至24:00这段时间内的电脑客户端,且相同的客户端只被计算一次。
3.并发连接数(Concurrent TCP Connections)
当一个网页被浏览,服务器就会和浏览器建立连接,每个连接表示一个并发。如果当前网页页面包含很多图片,图片并不是一个个显示的,服务器会产生多个连接同时发送文字和图片以提高浏览速度。
4.QPS(Query Per Second)
QPS即每秒查询率,是衡量一个特定查询服务器在规定时间内所处理流量多少的标准,在因特网上,作为域名系统服务器的机器性能通常用每秒查询率来衡量。对于系统而言,QPS数值是一个非常重要的参数,它是综合反映系统最大吞吐能力的衡量标注。
5.机房的网络质量评估
1)稳定性:响应延迟,丢包率
2)带宽质量:测试TCP的下载速度及最大TCP的下载速率
3)接入位置:接入路由器设备离骨干网的位置,接入条数越少越好
(2)CDN业务的选项
如果自己的业务网站中含有大量的图片和视频类文件,为了加快客户端的访问速度,同时缓解核心机房的服务压力并提升用户体验,建议大家在网站或系统的前端采用CDN缓存加速方案。
CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过现有的Internet中增加一层新的网络架构,讲网站的内容发布到最近用户的网络“边缘”,使用户可就近取得需要的内容,提高用户访问网站的响应速度,从而提升用户体验。
租赁CDN:中小型网站直接买服务,现在CDN已经进入按需付费的云计算模式,可以准确计算性价比。
自建CDN:这种方案的成本比较高,为了保证好的缓存效果,必须在全国机房布点,并且需要自建智能Bind系统。一般专业的视频网站或图片网站会考虑采用此方案。
(3)IDC机房的选择
单电信IDC机房:这种业务模式比较固定,访问量也不是很大,适合新闻类或政务类网站。
双线IDC机房:因为国内两大网络(电信和网通)之间存在互联互通的问题,所以电信用户访问网通网站或网通用户访问电信网站很慢,也因此产生了双线机房、双线服务器、双线服务器托管和双线服务器租用服务。
BGP机房:BGP(边界网关协议)是用来连接Internet的对立系统的路由选择协议。对于用户来说,选择BGP机房可以实现网站在运营商的用户访问网站都很快,也更加稳定,不用担心全国各地因线路带来访问速度快慢不一的问题,这也是传统双IP双线机房无法比拟的优势。
云计算服务:目前首推亚马逊云(AWS)和阿里云这两种云计算平台
云计算服务提供的产品能让我们的研发团队专注于产品研发本身,而不是购买硬件、配置和维护硬件等繁杂的工作,还可以减少初始资金投入。
云计算特别适合在某些日期或某些时段流量会激增的网站。
二、如何根据服务器应用来选购服务器
(1)服务器运行什么应用
负载均衡端:除了网卡性能以外,它在其他方面对服务器的要求都比较低。
缓存服务器:主要是Varnish和redis,对CPU及其他方面的性能要求一般,但在内存方面的要求较多。
应用服务器:承担计算和功能实现的重任,所以需要基于Web架构的应用程序服务器选择足够快的服务器。
特殊应用:除了用于web应用外,还有流媒体视频编码、服务器虚拟化、媒体服务器,或者游戏服务器,那同样会对CPU和内存有一定要求,至少四核以上。
公共服务:指的是邮件服务器、文件服务器、DNS服务器、域控服务器等。无需对于可靠性过于苛刻。
数据库服务器:数据库对服务器的要求是最高的,也是最重要的。需要足够快的CPU和足够大的内存、足够稳定可靠的硬件。建议固态硬盘做RAID10,因为数据库对硬盘IO要求是最高的。
Hadoop和Spark分布式计算:建议选择密集式存储。
RabbitMQ集群:基于Erlang语言开发,对于内存的要求很高。
(2)服务器需要支持多少用户访问
一般项目实施之前,客户会针对这些问题作出一个大致的结果,但我们要尽量设计的充分具体。
(3)需要多大空间来存储数据
(4)业务有多重要
1.选择什么CPU
2.需要多大的内存
相当多的正在运行的服务器,CPU的利用率一般10-30%,但我们发现内存的不够导致运行缓慢的比比皆是,如果服务器不能分配足够的内存,应用程序就需要硬盘接口交换读取数据,这将导致网站慢得令人无法忍受。
对于Tomcat、Resin、WebLogic的应用服务器,8GB内存是基准配置。
数据库服务器的内存由于数据库实例的数量、表大小、索引、用户数等,一般建议配置16GB以上,一般公司许多项目使用了24GB-48GB的内存。
特殊的服务器,需要配置尽可能高的内存容量,比如配置有Redis和Memcached的缓存服务器。
文件服务器,1GB内存就足够了。
3.需要怎样的硬盘存储系统
缓存服务器,可以考虑RAID 0
跑Nginx+FastCGI,可以考虑RAID 1
内网开发服务器或存放重要代码的服务器,可以考虑RAID 5
数据库服务器,可以考虑固态硬盘或RAID 5 RAID 10
(5)网卡性能方面的考虑
建议服务器配置两块网卡,一个对外提供服务,一个用于内部数据交换。
Keepalived只用公网地址的Linux集群架构,对网卡速率要求高,建议选用万兆网卡。
(6)服务器安全方面的考虑
国内的DDoS攻击普遍,建议配置硬件防火墙,比如Juniper、Cisco等。
(7)根据机架数合理安排服务器的数量
(8)成本考虑:服务器的价格问题
三、硬件对Linux性能的影响
(1)CPU
CPU是操作系统稳定运行的根本,CPU的速度与性能在很大程度上决定了整体的性能,因此,CPU数量越多也好、主频也高越好。
(2)内存
内存的大小直接影响Linux的性能重要因素,内存太小,系统进程被阻塞,应用也将变慢,甚至失去响应。
(3)磁盘IO性能
磁盘IO性能直接影响应用程序的性能,在一个有频繁读写的应用中,如果磁盘IO性能得不到满足,就会导致应用停滞。
RAIO 0:成本最低,要求至少两块磁盘,但是没有容错和数据修复,因而用在对数据安全要求不高的环境中。
RAIO 1:磁盘利用率只有50%,因而成本最高,多用在保存重要数据的场合。
RAIO 5:读取效率很高,写入效率一般,至少三块磁盘,允许一块磁盘故障,而不影响数据的可用性。
RAIO 10:至少需要4块磁盘,每个盘都是其镜像盘,提供冗余能力,同时允许一个磁盘故障,而不影响数据可用性,并具有快速读/写能力。
(4)网络带宽
Linux系统下的各种应用一般都是基于网络的,因此带宽也是影响性能的一个重要因素,低速不稳定的网络将导致应用的访问阻塞,而稳定、高速的网络带宽可以保证应用在网络上畅通无阻运行。