一、服务器性能测试范围
1、测试目的
-
发现服务器的性能瓶颈。配置的不同能够承载的最大任务数不同,能够承载的压力也不同。
在这里需要注意你自己的服务器的配置的不同,能够承载的最大用户数也是不同的,能够承载的压力也是不同的,所以在做性能测试的时候,关于服务器的基础配置一定要搞清楚,弄明白。
2、测试范围及性能指标
-
CPU 当CPU标高的时候意味着计算速度下降
-
内存 内存相当于临时存储的仓库,读写速度很快,相比较于磁盘来说内存的读写速度要高很多
-
磁盘 磁盘相当于真正的仓库,数据的持久化都写到磁盘里,假设有一天内存崩溃了,磁盘上的数据只要磁盘不毁坏就会一直存在,所以绝大多数数据库关系型或非关系型的都会保存到磁盘上,为了保证数据不丢失。还有一些nosql纯内存型的数据,只保存在内存里
-
网络 跨服务器之间有数据传输,就需要网络,网络的带宽大小承载了数据的大小,传输速度起到了一个决定性的作用。
-
版本 强调版本的目的是,在实际测试过程很难保证测试环境和生产环境的硬件相同,就要保证软件版本相同。不一致的版本环境会出现很大的性能差异。
3、测试与生产的环境配置不同?
-
通过多次压测来计算性能损耗
-
性能损耗的计算方式
从图中可以看到当服务器增加的越多,性能损耗就会越多
在实际工作中的场景,当一个应用上到生产环境,测试报告要有一个性能损耗的预估的一个体现,这个体现的依据就是要有一个性能损耗指标,性能损耗指标算法:就是相同的脚本,相同的场景,相同的并发用户数,增加服务器,大概算一下性能损耗的预估
二、进程与线程的定义和区别
1、定义与区别
-
进程:进程是具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的一个独立单位。
-
线程:线程是进程的一个实体,是cpu调度和分派的基本单位,他是比进程更小的能够独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源。一个线程可以创建和撤销另一个线程。
-
区别:
1)一个线程只能属于一个进程,而一个进程可以拥有多个线程。
2)线程是进程工作的最小单位
3)一个进程会分配一个地址空间,进程和进程之间不共享地址空间。即不共享内存。
4)同一个进程下的不同的多个线程,共享父进程的地址空间。
5)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
6)线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
三、进程与线程的优缺点
-
进程-优点
1)每个进程相互独立,不影响主程序的稳定性,子进程崩溃不影响其他进程。
2)通过增加CPU,就可以扩充性能。
3)可以尽量减少进程加锁与解锁的影响,极大的提高了性能。
-
进程-缺点
1)逻辑控制复杂,需要和主程序交互。
2)多进程调度开销大。
-
线程-优点
1)程序逻辑和控制方式简单。
2)所有线程可以直接共享内存和变量等。
3)线程方式消耗的总资源比进程方式少。
-
线程-缺点
1)每个线程与主程序共用地址空间,最大内存地址受限。
2)线程之间的同步和加锁不易控制。( 一个进程下的多个线程发生死锁)
3)一个线程的崩溃可能影响到整个程序的稳定性。