《大规模WEB服务开发技术》读书笔记(II)——专栏知识汇总

一、Linux单主机的负载linux

负载均衡——前提是把一台服务器的性能发挥到极致。算法

经过测量找出系统的瓶颈,而后消除瓶颈,发挥性能。数据库

寻找瓶颈的基本流程缓存

查看瓶颈负载(load average):top或者uptime检查平均负载,若平均负载很低,可是系统吞吐量没法提升,应该检查软件设置是否异常,检查网络和远程主机是否存在故障。服务器

确认CPU、I/O有无瓶颈:若平均负载很高,就须要在CPU或I/O中寻找缘由。sar或vmstat能够查看CPU、I/O等待率随着时间的推移状况,能够做为参考。网络

一、CPU太高,查找流程:多线程

确认是用户程序处理的瓶颈,仍是系统程序的缘由。用top或sar确认。负载均衡

再经过ps查看可见进程的状态和CPU使用时间等,肯定致使问题的进程。分布式

进一步寻找缘由,能够经过strace跟踪,或oprofile进行剖测,以肯定瓶颈所在。性能

通常来讲缘由以下:

磁盘或内存容量等其余部分没有称为瓶颈,即处于理想状态;

程序失控,须要消耗过多的CPU。

若是是前者,而且吞吐量有问题,能够采起增长服务器、改善程序逻辑和算法的方式。后者的状况要去除故障,避免程序失控。

二、I/O负载太高,其缘由多半是程序发出的I/O请求过多致使负载太高,或是发生页面交换致使频繁访问磁盘。应经过sar或vmstat确认交换区状态,以找出缘由。

若是是发生页面交换的状况,应该从如下几点着手调查:

用ps确认是否有进程消耗了大量的内存;

若是因为程序故障形成内存消耗过大,应改进程序;

若是因为内存安装不足,就要增长内存。没法增长内存时,考虑分布式。

若是没有发生交换,并且磁盘I/O频繁的状况,多是用于缓存的内存不足。根据服务器数量和可增长的内存量,按下面的应对方法:

若是经过增长内存能够扩大缓存,就增长内存;

若是增长内存还不够用,就考虑分散存储数据,或增长缓存服务器等。固然,改进程序减小I/O频率也是一种方法。

操做系统调优,就是找出负载缘由并去除之。

二、两种负载与Web应用程序

两类负载:CPU负载和I/O负载

linux中top结果包含有load average的数字,即平均负载,平均负载值通常都是在定时器中断发生时计算的。表明的意思就是单位时间中处于等待状态的任务数,亦即:

等待赋予CPU的执行权限的进程;

等待磁盘I/O完成的进程。

因此平均负载是两种负载综合的结果,单凭该数字还没法判断是哪一种负载高。

三、平均负载以后是CPU使用率和I/O等待率

经过sar查看CPU使用率和I/O等待率:%user是CPU在用户模式下的使用率,%system为系统模式下的使用率。平均负载高,而且此处的CPU使用率也高的话,就能够判断出进程等待的高负载缘由就是CPU资源不足。

%iowait是I/O等待率,平均负载高,且该数值也高就能够认为高负载的缘由就是I/O,以后就能够进一步查看内存使用率、页面交换发生情况等其余指标。

sar -P就能够查看多CPU的状况

四、查看sar命令中操做系统报告的各项指标

两种用法:追溯过去的统计数据(默认)、周期性的查看当前数据

sar 1 4 一秒一次,共4次

sar -u 查看CPU使用率:%user用户模式下的使用率 %nice经过nice改变了进程调度优先级的进程,在用户模式下消耗的CPU时间比例 %system系统模式下的使用率 %iowaitCPU等待磁盘I/O而致使空闲状态消耗时间的比例%steal利用操做系统虚拟化技术时,等待其余虚拟CPU计算占用的时间比例 %idle空闲比例

sar -q 查看平均负载

sar -r 查看内存使用情况:kbmemfree空闲物理内存量 kbmemused使用中的物理内存量 %memused物理内存使用率 kbbuffers内核中做为缓冲区使用的物理内存容量 kbcached内核中做为缓存使用的物理内存容量 kbswpfree交换区的空闲容量 kbswpused使用中的交换区容量。

sar -W 查看页面交换发生的情况:pswpin/s每秒换入页面数 pswpout/s每秒换出页面数

五、下降I/O负载和页面缓存

%memused愈来愈大,可是不能忘记linux的页面缓存。

特别是I/O密集型服务器,根据服务器处理的数据量安装内存,是下降I/O负载的有效方法。

vmstat能够看到实际发生了多少磁盘访问。

若是没法增长内存,能够考虑将数据分割,分别放在不一样的服务器上。

要先读取一次磁盘才会页面缓存:在MySQL等数据库中处理大规模数据时要注意这一点,让数据库将必要的数据读取一次以后再放回生产环境。【此处如何将MySQL各类数据文件所有读入的程序】

六、负载均衡和操做系统的运行原理

理解操做系统的运行原理是学习负载均衡的重点。

学习操做系统的运行原理以后,就能深刻理解

操做系统缓存

多线程、多进程

虚拟内存机制

文件系统

要调查负载须要操做系统内部的哪些信息

相关文章
相关标签/搜索