线程与进程的区别:
进程:是执行一段程序,即一旦程序被载入到内存中准备执行,它就是一个进程。
线程:单个进程中执行每一个任务就是一个线程
一个线程只属于一个进程,一个进程里可以有多个线程
上下文切换:
在处理器执行期间,运行进程的信息被存储在处理器的寄存器和高速缓存中,执行的进程被加载到寄存器的数据集被称为上下文
在切换过程中,先存储运行进程的上下文,然后将下一个要执行的进程的下文恢复到寄存器中。
简单的说就是指CPU 从一个进程或线程切换到另一个进程或线程。
中断处理:
中断处理是优先级最高的任务之一,中断通常由I/O设备产生,比如网卡,键盘,磁盘等;
在linux实现中,存在两种类型的中断,硬中断和软中断;
硬中断:是有硬件设备产生的,需要快速响应(比如:磁盘I/O中断,网络适配器中断,键盘中断,鼠标中断等)
软中断:软中断被用来处理可以推迟的任务,如:TCP/IP操作,SCSI协议操作等,可以在/proc/interrupts下看到硬件中断的相关信息。
在一个多处理的环境中,中断是由每个处理器处理的,将中断绑定到单个处理器上可以提高系统性能。
CPU监控常用命令:
cat /proc/cpuinfo 查看cpu配置信息
pgrep sshd 查看sshd进程的ID
kill -l 列出所有可以有kill发送的信号
kill -9 进程号#强制终止进程
pkill #根据进程名强制终止进程
MPSTAT监控工具
mpstat是实时监控工具
其报告与cpu的一些统计信息,这些信息存放在/proc/stat文件中
在多CPUs系统里,不但能查看所以CPU的平均状况信息,而且能够查看特定CPU的信息
mpstat [-P {|all}] [internal [count]]
参数接受:
-P {|all} 表示监控哪个CPU,CPU在[0,CPU格式-1]中取值
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有internal时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个internal时间段的信息。
SAR 命令
sar---系统活动情况报告,可以从多方面对系统的活动进行报告,包括:文件的读写情况,系统调用的使用情况,磁盘I/O,CPU效率,内存使用情况,进程活动以及IPC有关的活动等
使用方法:
sar [option] [<internal> [<count>]]
sar 监控CPU:
sar -u 5 3 #每五秒采集一次,连续采集三次,观察CPU的使用情况
sar -u -o output 5 3 #采集,并将采集结果以二进制的形式存入
sar -f output #查看output文件
输出格式:
CPU %user %nice %system %iowait %steal %idle
关键指标:
%iowait 显示用于等待I/O操作占用CPU总时间的百分比
%idle 显示CPU空闲时间占用CPU总时间的百分比
系统瓶颈定位:
若%iowait的值过高,表示硬盘存在I/O瓶颈
若%idle的值高但系统响应慢,有可能是CPU等待分配内存,此时应加大内存容量
STRACE 命令
starce常用来跟踪进程执行时的系统调用和所接收的信号
starce可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间
例1:跟踪2345进程的所有系统调用,并统计系统调用所花费的时间
strace -o strace.txt -T -tt -e trace=all -p 2345
例2:跟踪configure脚本里面的execve的系统调用
starce -f -o configure-strace.txt -e execve ./configure
杂谈:
1:面试的时候让我讲解一下我们的项目,项目应该怎么合理的阐述?
参考:面试官考查的目的=》应聘的职位=》功能测试、性能测试?
如:性能测试岗位:我们公司的是xxx项目,该项目是web系统,该系统运行的硬件环境是什么,软件配置是什么,同时可以支持多少个tps,延迟是多少,web系统持续稳定工作多久,我们测试过程中,采用的是SEI,我们在这个项目里面开展了哪些类型的测试,测试过程中,发现了哪些深刻的测试问题,问题是什么,我使用jmeter负载工具,在后台用到了xxx性能监控
2:问你怎么用linux做性能监控,就说用到了哪些命令,怎么分析这些数据?
参考:CPU、内存、磁盘、网络 top、vmstat、dstat、netstat
cpu:sy+us大于80%,wa值为0,认为CPU存在瓶颈
内存:free空间很少,swap使用了,so数值不断变化,而且量很大,认为内存瓶颈
磁盘:top,wa数值很高,CPU的us不高,发现sy很高
网络:netstat -tans 有没有丢包,有没有重传等。
3:如果让我压测上线的网站,会影响到用户?
参考:不可能在上线压测,通常在实验室中压测性能
4:tps上下波动一般是什么问题?
参考:1、流量波动吗? 2、网络是否有问题(在公司内部一般都是交换机压测,一般很少出现此问题) 3、业务逻辑(定时作业) 4、有没有失败 5、Java(垃圾回收GC FULL GC)
5:验证码如何处理?
参考:自动化测试:叫开发拿掉 性能测试:验证码只是针对界面的,性能是直接用接口的,一般不会出现这个情况