并发测试开端

前言:

并发模型你们会想到什么来操作呢,是不是很高大上这个词语

我们测试常见跟开发人员接口或者并发问题,对我们测试很苦脑有没有?

记得我刚进测试的时候也是小白一个,做功能一直点点点,然后开发人员说测试一下压力测试

然后大家就是用工具来进行测试,这样的方法是可能进行测试,如果开发人员就给了你一个链接,什么都没有给,你们会在心理说,这怎么能做并发呢,没有参数这是我们测试脑袋中第一时间说的话,但很多公司就是这样,就告诉你在那里自己做,我们就要写异步脚本,对性能工具少一点依赖,我们用的最多听得最多就是Jmeter,SoupUI,LoadRunner等等

现在就给大家举个例子:

最简单的并发线程

import socket

response = ‘HTTP/1.1 200 OK\r\nConnection: Close\r\nContent-Length: 11\r\n\r\nHello World‘

server = socket.socket()
server.bind((‘x.x.x.x‘, xxxx))
server.listen(1024)

while True:
  client, clientaddr = server.accept() 
  request = client.recv(1024) 
  client.send(response) 
  client.close()

访问localhost:xxxx,返回“Hello World”

如果你用ab进行测试性能数据

ab -n 10000 -c X http://localhost:xxxx/
Time taken for tests: 2.1234 seconds

发送1万个请求,X(我的CPU核数为X)个请求同时并发,耗时2.1234秒。
性能瓶颈在哪里呢?就在上面的两个半阻塞。
accept和recv是完全阻塞的,而为什么send是半个阻塞呢?
在内核的 socket实现中,会有两个缓存 (buffer)。read buffer 和 write buffer 。当内核接收到网卡传来的客户端数据后,把数据复制到 read buffer ,这个时候 recv阻塞的进程就可以被唤醒。
当调用 send的时候,内核只是把 send的数据复制到 write buffer 里,然后立即返回。只有 write buffer 的空间不够时 send才会被阻塞,需要等待网卡发送数据腾空 write buffer 。在 write buffer的空间足够放下 send的数据时进程才可以被唤醒。
如果一个请求处理地很慢,其他请求只能排队,那么并发量肯定会受到影响。

后面多讲一下理论课,并发要知道那些才能进行测试
1.线程

2.进程

3.远程分布式主机

4.伪线程

。。。。。。。。。。

时间: 2024-10-12 18:36:03

并发测试开端的相关文章

多线程访问网页+高并发测试网站

多线程访问网页+高并发测试网页 仅供学习,请勿用于非法用途. 线程类如下 import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class TestThread extends Thread{ private String httpurl

初学者Jmeter对HTTP请求压力测试、并发测试的简单使用

测试目的:测试服务器能同时承受多少条HTTP请求. 通过利用操作系那个对简单的Jmaeter来对服务器进行简单的压力.并发测试 一.运行Jmeter: 首先在网上下载一个jmeter,我下载的是2.3.4版本,其他版本同理 通过解压后得到一个tgz格式的文件,然后再继续解压得到一个文件夹如下图: 打开文件夹运行bin目录下的 jmeter.bat即可进入jmeter的主界面,如图: 假如运行 jmeter.bat报错不能正常打开,那就要检查本机是否有安装JDK,如果能保证安装好JDK和配置好环境

使用JMeter3.0实战之分布式并发测试以及web API接口测试

简介: 该文档是以Apche JMeter-3.0为例进行编写的,通过网上的学习资料和官方文档的说明手册学习后,进行项目操作实践,将测试的过程记录下提供给大家学习. 本博文的内容主要是进行配置JMeter的测试参数,进行并发测试,分布式测试和收集服务器端的性能参数以及如何去测试web api接口的方法. 本博文以工作的项目作为并发测试的实验案例.如果有错误,请大家指出. 1.使用Badboy录制Web性能测试脚本 1.1使用Badboy工具进行录制Web性能测试脚本 (1)启动Badboy.首次

Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现

Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssql 的实现 NEWID() 跟rand()  1 5. newid()与rand()的区别 2 6. NEWID() 2 7. 参考 2 1. 应用场景 并发测试 2. 随机抽取数据原理 原理是 循环所有的ID/记录,附加随机函数字段,然后排序as 这个字段.. 3. 常用的实现方法:::数据库随机

Jmeter之仿真高并发测试(集合点)

场景: 大家在使用Jmeter测试的时候应该发现了, (1)线程启动了就会直接发送测试请求:--如果要模拟在一瞬间高并发量测试的时候,需要调高线程数量,这很耗测试机器的性能,往往无法支持较大的并发数,无法控制每次测试的瞬间并发量: (2)如果使用了constant throughput timer,可以模拟较长时间的并发测试,但是仍无法满足稳定的瞬间高并发测试: 解决: 1.使用集合点: 作用:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力. 引用虫师的话"红军排长说:等

curl模拟登录,并发测试

开发各种软件或系统都需要进行压力测试等,近来有一个后台web系统新需要进行测试,怎么才能很方便的测试呢,curl就ok了. curl是linux/unix下很强大的命令,全称 command url,web测试中最重要的应该算是维持session,而客户端实现的方式是使用cookie. curl参数介绍: --data post方式参数 -L 自动重定向 -c 将cookies保存到文件 -b 将cookie一起发送至服务端 下面看一下具体的操作: 模拟登陆: 1 curl -L -c cook

appium 并发测试

Android并发测试 Appium提供了在一台设备上启动多个Android会话的方案,而这个方案需要你输入不同的指令来启动多个Appium服务来实现. 启动多个Android会话的重要指令包括: -p Appium的主要端口 -U 设备id -bp Appium bootstrap端口 --chromedriver-port chromedriver端口(当使用了webviews或者chrome) --selendroid-port selendroid端口(当使用了selendroid) 如

网站性能并发测试工具

网站性能并发测试工具 2012-05-05 22:04:26 分类: 项目管理 导读:随着Web 2.0技术的迅速发展,许多公司都开发了一些基于Web的网站服务,通常在设计开发Web应用系统的时候很难模拟出大量用户同时访问系统的实际情况,因此,当Web网站遇到访问高峰时,容易发生服务器响应速度变慢甚至服务中断. 随着Web 2.0技术的迅速发展,许多公司都开发了一些基于Web的网站服务,通常在设计开发Web应用系统的时候很难模拟出大量用户同时访问系统的实际情况,因 此,当Web网站遇到访问高峰时

Node.js真的有高并发优势吗?看看Node.js和Tomcat的并发测试结果

同一套业务逻辑,实现一个webservice中间接口,中间涉及memcached和mogodb的一些操作.分别在Node.js和JAVA平台实现,java代码部署在Tomcat 7.0上,用Apache jmeter进行压力测试.得到的测试结果很是出乎意料,Node.js的高并发优势为什么没有体现出来呢??? 操作系统:CentOS 6.4(虚拟机)内存:1.5GCPU:单核 并发数 100执行次数 10 以下是测试结果 可以看到Node.js的平均执行时间为333毫秒,Tomcat的执行时间为