一、服务器测试概述
1.1 测试目的
- 发现服务器的性能瓶颈。
配置的不同能够承载的最大任务数不同,能够承载的压力也不同。
1.2 测试与生产环境配置不同怎么办
-
通过多次压测来计算损耗
服务器增加越多,性能损耗越多。
相同脚本,相同场景下,查看服务器指数,预估实际生产环境下的性能损耗,性能指标。 -
性能损耗的计算方式
- 多次压测后的性能预估
横轴:多少台服务器 纵轴:性能指数
- 多次压测后的性能预估
二、进程与线程
2.1 定义与区别
-
进程是具有一定独立功能程序的关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。(ps)
-
线程是进程的一个实体,是cpu调度和分派的基本单位,他是比进程更小的能够独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源。一个线程可以创建和撤销另一个线程。
-
一个线程只能属于一个进程,而一个进程可以拥有多个线程。
-
线程是进程工作的最小单位。
-
一个进程会分配一个地址空间,进程与进程之间不共享地址空间。即不共享内存。
-
同一个进程下的不同的多个线程,共享父进程的地址空间。
-
线程在执行过程中,需要协作同步(多线程运行,同步锁)。不同进程的线程间要利用消息通信的办法实现同步(中间件,外部依赖)。
-
线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
2.2 进程优缺点
-
每个进程互相独立,不影响主程序的稳定性,子进程崩溃不影响其他进程。
-
通过增加CPU,就可以扩充性能。
-
可以尽量减少线程加锁与减锁的影响,极大的提高了性能。
-
逻辑控制复杂,需要和主程序交互。
-
多进程调度开销大。
2.3 线程优缺点
-
程序逻辑和控制方式简单。
-
所有线程可以直接共享内存和变量等。
-
线程方式消耗的总资源比进程方式少。
-
每个线程与主线程共用地址空间,最大内存地址受限。
-
线程之间的同步和加锁不易控制(死锁)。
-
一个线程的崩溃可能影响到整个程序的稳定性(共享数据)。
一般同一个相关任务列为一个进程,多进程与多线程配合使用。
三、服务器实时监控
3.1 服务器性能测试范围
- CPU
- 内存
- 磁盘
- 网络
- 版本
3.2 服务器实时内存监控
top
- top:能够实时监控系统的运行状态,并且可以按照cpu及内存等进行排序。
- top参数
-h:帮助
-p:监控指定的进程。当监控多个进程时,进程ID以逗号分割。这个选型只