【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
1、Linux单主机的负载
负载均衡——前提是把一台服务器的性能发挥到极致。
通过测量找出系统的瓶颈,然后消除瓶颈,发挥性能。
寻找瓶颈的基本流程
查看瓶颈负载(load average):top或者uptime检查平均负载,若平均负载很低,但是系统吞吐量无法提高,应该检查软件设置是否异常,检查网络和远程主机是否存在故障。
确认CPU、I/O有无瓶颈:若平均负载很高,就需要在CPU或I/O中寻找原因。sar或vmstat可以查看CPU、I/O等待率随着时间的推移情况,可以作为参考。
1、CPU过高,查找流程:
确认是用户程序处理的瓶颈,还是系统程序的原因。用top或sar确认。
再通过ps查看可见进程的状态和CPU使用时间等,确定导致问题的进程。
进一步寻找原因,可以通过strace跟踪,或oprofile进行剖测,以确定瓶颈所在。
一般来说原因如下:
磁盘或内存容量等其他部分没有称为瓶颈,即处于理想状态;
程序失控,需要消耗过多的CPU。
如果是前者,并且吞吐量有问题,可以采取增加服务器、改善程序逻辑和算法的方式。后者的情况要去除故障,避免程序失控。
2、I/O负载过高,其原因多半是程序发出的I/O请求过多导致负载过高,或是发生页面交换导致频繁访问磁盘。应通过sar或vmstat确认交换区状态,以找出原因。
如果是发生页面交换的情况,应该从以下几点着手调查:
用ps确认是否有进程消耗了大量的内存;
如果由于程序故障造成内存消耗过大,应改进程序;
如果由于内存安装不足,就要增加内存。无法增加内存时,考虑分布式。
如果没有发生交换,而且磁盘I/O频繁的情况,可能是用于缓存的内存不足。根据服务器数量和可增加的内存量,按下面的应对方法:
如果通过增加内存可以扩大缓存,就增加内存;
如果增加内存还不够用,就考虑分散存储数据,或增加缓存服务器等。当然,改进程序减少I/O频率也是一种方法。
操作系统调优,就是找出负载原因并去除之。
2、两种负载与Web应用程序
两类负载:CPU负载和I/O负载
linux中top结果包含有load average的数字,即平均负载,平均负载值一般都是在定时器中断发生时计算的。代表的意思就是单位时间中处于等待状态的任务数,亦即:
等待赋予CPU的执行权限的进程;
等待磁盘I/O完成的进程。
所以平均负载是两种负载综合的结果,单凭该数字还无法判断是哪种负载高。
3、平均负载之后是CPU使用率和I/O等待率
通过sar查看CPU使用率和I/O等待率:%user是CPU在用户模式下的使用率,%system为系统模式下的使用率。平均负载高,并且此处的CPU使用率也高的话,就可以判断出进程等待的高负载原因就是CPU资源不足。
%iowait是I/O等待率,平均负载高,且该数值也高就可以认为高负载的原因就是I/O,之后就可以进一步查看内存使用率、页面交换发生状况等其他指标。
sar -P就可以查看多CPU的情况
4、查看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每秒换出页面数
5、降低I/O负载和页面缓存
%memused越来越大,但是不能忘记linux的页面缓存。
特别是I/O密集型服务器,根据服务器处理的数据量安装内存,是降低I/O负载的有效方法。
vmstat可以看到实际发生了多少磁盘访问。
如果无法增加内存,可以考虑将数据分割,分别放在不同的服务器上。
要先读取一次磁盘才会页面缓存:在MySQL等数据库中处理大规模数据时要注意这一点,让数据库将必要的数据读取一次之后再放回生产环境。【此处如何将MySQL各种数据文件全部读入的程序】
6、负载均衡和操作系统的运行原理
理解操作系统的运行原理是学习负载均衡的重点。
学习操作系统的运行原理之后,就能深入理解
操作系统缓存
多线程、多进程
虚拟内存机制
文件系统
要调查负载需要操作系统内部的哪些信息
来源:oschina
链接:https://my.oschina.net/u/567145/blog/228303