zoukankan      html  css  js  c++  java
  • Linux服务器的性能调优理论篇

    一、网站架构相关

    (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系统下的各种应用一般都是基于网络的,因此带宽也是影响性能的一个重要因素,低速不稳定的网络将导致应用的访问阻塞,而稳定、高速的网络带宽可以保证应用在网络上畅通无阻运行。

  • 相关阅读:
    Go语言 go get 找不到 google.golang.org/protobuf/encoding/prototext 解决办法
    golang.org/x包无法下载
    mqtt服务压力测试
    go-test知识点
    多线程并发
    elasticsearch-基础查询语法整理
    go 代码依赖管理工具mod使用
    微服务软件架构设计
    docker搭建mysql
    服务docker化
  • 原文地址:https://www.cnblogs.com/hkping18/p/11587952.html
Copyright © 2011-2022 走看看