压力测试
# FastWeb压力测试
- 适用平台: WEB(桌面)
开发项目时,首要考虑的是系统的服务能力,每个WEB项目都需要能够为多个用户同时提供服务,系统不同用户数也不同,一个企业内网的应用项目能支持10-50个并发一般就够用了,但是一个互联网应用项目可能需要同时为500-1000个用户服务,甚至更多。为了确保项目能够在生产环境下为更多用户提供流畅的服务,需要进行一些测试,首先就是分析资源的消耗,一个稳定高效的WEB服务系统需要通过多种技术来保证高效和充分利用资源。比如一个会话需要10MB内存,那么只需要40个会话就会把400MB的内存用光,相同道理,系统的其他资源比如CPU、硬盘空间、硬盘I/O,数据库连接数都需要通过压力测试做性能评估和资源配置设计。
对于开发者来说很难通过桌面电脑来模拟生产环境,在少量的用户访问状况下可能会运行的很完美,但是在生产环境下当并发访问量快速提升到系统瓶颈时,系统的资源可能会很快耗尽直至系统宕机,在此提供了一个压力测试工具LoadTest可用于检测运行的稳定性。
需要注意的是使用压力测试工具进行会话录制要求被测试的FastWeb程序开启会话录制的选项,在主目录下的UG.ini
文件中修改[Options]
下的soAllowSessionRecording
选项为True
。重启FastWeb进行测试。在生产环境的正式部署需要将soAllowSessionRecording
设置为False
后运行,而不可以使用会话录制模式运行部署。
# 1. 界面介绍
使用鼠标左键双击LoadTest.exe
打开压力测试工具主界面。主界面上包括菜单栏、快捷图标、设置、状态等相关内容。

点击文件
菜单栏,其中包含以下选项:
- 新建项目(V) Ctrl+N:新建会话录制的项目。
- 打开项目(W) Ctrl+O:打开会话录制项目。
- 保存项目(X) Ctrl+S:保存会话录制项目。
- 另存为项目(Y)...:将项目文件另存至其他目录位置。
- 退出(Z) Alt+X:离开并退出压力测试程序。
点击运行
菜单栏,其中包含以下选项:
- 开始(X):根据指定的Web程序信息以及会话录制记录开始执行压力测试操作。
- 录制(Y):开启浏览器并记录会话过程中的操作信息。
- 停止(Z):停止会话录制并保存会话录制的记录。
点击其他
菜单栏,其中包含以下选项。
- 调整注册表设置(Z):调整服务端的注册表的信息以更加方便进行压力测试的相关内容。
点击语言
菜单栏,可选择压力测试工具默认的语言项。
工具栏中的图标如上图所示,各图标的说明如下:
图标 | 名称 | 说明 |
---|---|---|
退出 | 离开并退出压力测试程序 | |
新建项目 | 新建会话录制的项目 | |
打开项目 | 打开会话录制的项目 | |
保存项目 | 保存会话录制项目 | |
另存为项目 | 将项目文件另存至其他目录位置 | |
开始 | 根据指定的Web程序信息以及会话录制记录开始执行压力测试操作 | |
录制 | 开启浏览器并记录会话过程中的操作信息 | |
停止 | 停止会话录制并保存会话录制的记录 | |
显示状态监视器 | 打开程序的控制台界面 |
设置栏中的相关栏位说明如下:
每次运行的总会话数:在进行压力测试时启动的连接会话数量。
最大工作线程:在进行压力测试时启动的线程的最大数量。
总运行次数:压力测试进行的次数。
运行之间的延迟(秒):上一轮压力测试结束至下一次压力测试开始的时间间隔。
播放速度:压力测试操作的速度,
Max Speed
:最块速度。Real Time
:实际操作的速度。Real Time × 2
:实际操作速度的二倍速。Real Time × 4
:实际操作速度的四倍速。Real Time × 8
:实际操作速度的八倍速。Real Time / 2
:实际操作速度的二分之一。
并发请求(每个会话):设置每个会话同时发出请求的数量。
Web应用程序的Url:进行绘画录制或者压力测试的地址。
可用的会话记录:会话录制记录的列表。
状态栏中的相关栏位说明如下:
- 活动会话:正在进行中的会话数量。
- 完成会话:已经完成结束的会话数量。
- 活动线程:正在使用中的线程数量。
- HTTP错误:HTTP连接出错的次数。
- 进度:压力测试的进度百分比。
- 运行时间:压力测试的运行时长,如果正处于压力测试运行中则运行时间会增加。
- 剩余运行次数:已结束会话但未关闭的会话数量。
- 等待下一次进行:剩余的压力测试运行数量。
# 2. 录制一个会话
打开压力测试工具,在Web应用程序的Url
栏位中填写压力测试对象的URL地址,例如本机的程序http://localhost:8888 (opens new window),点击[记录]
按钮,调起系统的默认浏览器进入主页,根据需要随意模仿用户做各个功能的点击,所有的操作过程都将被工具录制下来,继续操作,直到覆盖几乎所有可重复操作的系统功能,然后切换至压力测试工具,点击[停止]
按钮停止录制的会话,同时在可用的会话记录
下拉列表中会新增一个刚刚新录制的会话,点击“保存”按钮保存新录制的会话。

此处使用压力测试工具来重复调用,就需要要求录制的会话是可以重复执行的,即为了做压力测试而录制的会话需要具有唯一性,只能产生相同的HTML内容,录制会话时所有的操作过程和操作结果都需要是一致的和可自动回放的,否则将导致压力测试无法进行。针对数据库相关操作(插入,删除)不应当作为会话录制的选项,比如一个数据表,你的动作是删除一条记录,这种动作在压力测试工具执行第二次时还要去删除同一条记录,但是此时该记录已经不存在了,因此这种情况也不可行。
# 3. 运行压力测试
运行压力测试其实就是“回放”你录制的会话,根据你录制的会话,压力测试工具能够发出一系列的Ajax请求到服务端,这些请求将模拟多用户的并发访问,但是压力测试工具的“回放”过程并不实际调用浏览器重新模拟用户操作,而是向服务端发出一系列的Ajax数据报文。做压力测试有几个方面需要注意:
如需要测试移动端的程序需要在在录制会话时将地址指定为移动端的URL地址。
调整相关参数。
- 每次运行的总会话数:每次创建多少会话,建议由低到高一点点增加。
- 最大工作线程:设置最大工作的线程数目。
- 总运行次数:录制的会话要回放多少次。
- 运行之间的延迟(秒):每次回放之间的时间间隔,建议时长设定大于60秒。
- 播放速度:如果选择Max Speed最大速度,在Ajax访问之间将不加延时,如果选择RealTime将和录制的会话保持一致,可根据需求进行选择。
在压力测试过程中可以点击
显示App状态监视器
图标将启动服务器监控界面。对于非集群方式设置的服务,可在打开的页面中查看相关资源信息,如果是在集群模式下设置的服务端,则在HyperServer
的服务器节点
中找到对应的从机服务器节点并进入至控制台界面进行查看。点击
状态
界面,查看会话连接的情况。
Sessions(会话):当前运行的会话数,Peak
为运行结果中出现的最大的会话处理数。一般不能超过最大值。
Requests(请求):服务器正在处理的Ajax请求数量,Peak
为运行结果中出现的最大的Ajax请求数量,该数量不应超过设定的最大值。
Purged Files/Folders(清除文件/文件夹):不再属于活动会话的目录和文件数(还没有清除)。
Bytes(字节):服务器运行生命周期内已发送、已接收的字节数,以及数据量的压缩比。
Uptime(运行时间):服务器已经运行了多久。如果运行时间较长的话建议及时进行维护操作,一般1个月需要进行一次。
- 点击
资源
标签页查看资源占用情况。

Memory(Internal)(内存(内部)):这个参数需要高度关注,尤其是在32位操作系统之下,按照理论32位应用程序最多只能使用2G内存,但是实际上如果其使用量达到1.0GB-1.1GB时就意味着系统存在危险,此时可能会出现“Out of Memory 内存不足”的错误提示。
Memory(Process)(内存(进程)):程序整体使用的内存量(包括所依赖的其他DLL等)。按照理论32位应用程序最多只能使用2G内存,但是实际上如果其使用量达到1.0GB-1.1GB时就意味着系统存在危险,此时可能会出现“Out of Memory 内存不足”的错误提示。
CPU Load(System)(CPU负载(系统)):正在使用的CPU情况,包含多核CPU。对于CPU负载空闲状态下不超过1%,在高负载下不能长时间维持在100%,否则就可能会对网站的访问产生影响。
GDI Objects(GDI对象):GDI对象是有限的系统资源,对于空闲的应用系统来说该参数不应该多于100。
USER Objects(用户对象):用户对象的资源。通常会略微低于GDI对象。
Handles(句柄):处理的资源指标。
Connections(Pooled)(连接池):设置连接信息的相关指标。
- 压力测试工具将在后台运行,查看日志是获取运行结果的唯一办法。
# 4. 考虑工具防护
压力测试工具在短时间内会发出大量访问请求,这些访问请求都来自相同的IP地址,操作系统和网络设备可能会把这种来自相同地址的访问请求拦截掉,尤其是测试工具和测试目标运行在不同机器的时候,两者都在同一台机器上时不会有这个问题,但是也需要考虑杀毒软件或者防火墙可能带来的本机拦截,这种问题一旦出现,就需要降低发送速度和增加每轮之间的间隔时间,并且相应的取消这些外围软硬件给测试造成的障碍。
从远程客户端运行Stress Test Tool可能会触发防洪保护,但在同一桌面上同时运行uniGUI应用程序和Stress Test Tool应该可以正常工作,而不会触发任何防洪保护机制。
除服务器操作系统外,某些第三方保护软件可能会为服务器IP流量添加其他保护层,这可能会阻止来自Stress Test Tool的快速连续请求。在这种情况下,您需要通过将播放速度设置为实际时长
,或在两轮压力测试之间设置更长的间隔时间来降低播放速度,以允许请求通过防洪检测层。
# 5. 其他
压力测试工具每秒创建数百个HTTP请求,从而给被测试的服务器带来沉重的负担。 这可能超出了运行压力测试工具的操作系统的限制。 这些限制之一是TCP端口,默认情况下,操作系统将TCP端口限制为某个值。 为了使Stress Test Tool顺利运行,我们需要调整TCP端口限制并将其增加到更高的值。 这需要Windows注册表中的一些注册表设置。
压力测试工具提供了自动更改相关注册表的配置,在压力测试程序的界面,选择其他
-调整网络设置
。出现如下图所示的对话框,点击[Yes]
按钮修改注册表。使用修改注册表的相关功能前需要确保压力测试工具以管理员模式下运行。

操作成功会显示如下界面,要求重新启动服务器以完成操作。