线程与进程的区别:
    进程:是执行一段程序,即一旦程序被载入到内存中准备执行,它就是一个进程。
    
    线程:单个进程中执行每一个任务就是一个线程
    
    一个线程只属于一个进程,一个进程里可以有多个线程
    

上下文切换:
    在处理器执行期间,运行进程的信息被存储在处理器的寄存器和高速缓存中,执行的进程被加载到寄存器的数据集被称为上下文
    
    在切换过程中,先存储运行进程的上下文,然后将下一个要执行的进程的下文恢复到寄存器中。
    
    简单的说就是指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:验证码如何处理?
        参考:自动化测试:叫开发拿掉        性能测试:验证码只是针对界面的,性能是直接用接口的,一般不会出现这个情况