http请求

JMeter之一个简单的性能测试

瘦欲@ 提交于 2020-01-23 17:02:21
测试资源准备: 1)测试目标网站是 https://www.cnblogs.com/DeryKong/ 2)测试目的是该网站在负载达到20 QPS 时的响应时间。 QPS 解释   QPS : Query Per Second 每秒查询率。是一台查询服务器每秒能够处理的查询次数。在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。   为了达成预期的测目的,需要需要在jmeter中建立一个测试计划。因为本次测试仅要求完成对fnng.cnblogs.com 和 tt-topia.rhcloud.com 两个博客首页请求,因此只需要使用HTTP Request Sampler 即可 建立测试计划   启动jmeter后,jmeter会自动生成一个空的测试计划,用户可以基于该测试计划建立自己的测试计划。 添加线程组   一个性能测试请求负载是基于一个线程组完成的。一个测试计划必须有一个线程组。测试计划添加线程组非常简单。在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选择线程组即可。   JMeter中 每个测试计划至少需要包含一个线程组,当然也可以在一个计划中创建多个线程组,那么多个线程组之间又会怎样的顺序执行(串行还是并行)?在测试计划下面多个线程是并行执行的,也就是说这些线程组是同时被初始化并同时执行线程组下的Sampler的。  

详解proxy_pass、upstream与resolver

无人久伴 提交于 2020-01-23 16:55:56
转载自 详解proxy_pass、upstream与resolver 应用场景 这里列举几个应用场景,下文会针对这几个场景并结合代码进行分析。 (1)proxy_pass + upstream upstream foo.example.com { server 127.0.0.1:8001; } server { listen 80; server_name localhost; location /foo { proxy_pass http://foo.example.com; } } 访问 http://localhost/foo ,proxy模块会将请求转发到127.0.0.1的8001端口上。 (2)只有proxy_pass,没有upstream与resolver server { listen 80; server_name localhost; location /foo { proxy_pass http://foo.example.com; } } 实际上是隐式创建了upstream,upstream名字就是 foo.example.com 。upstream模块利用本机设置的DNS服务器(或/etc/hosts),将 foo.example.com 解析成IP,访问 http://localhost/foo ,proxy模块会将请求转发到解析后的IP上。

HTTP1.0 、1.1

為{幸葍}努か 提交于 2020-01-23 04:53:24
网上有很多资料说明这个,但都很长的,觉得东西太多也记不住,就记点东西,权当笔记。 HTTP 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。 请求报文格式如下: 请求行 - 请求头 - 请求包体 请求行:请求行由URL字段、方法字段 和HTTP协议版本字段3个部分组成,之间用空格隔开。 请求头:请求头包含关于客户端请求的信息,由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。 请求包体:请求包体不在GET方法中使用,而是在POST方法中使用(提交表单)。与请求包体相关的最常使用的是包体类型 Content-Type 和包体长度 Content-Length。 应答报文格式如下: 状态行 - 响应头 - 响应包体 状态行:状态行由HTTP协议版本字段、状态码和状态码的描述文本3个部分组成,之间用空格隔开。 响应头:响应头包含服务端的响应信息,由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。 响应包体:服务器返回给客户端的文本信息。 HTTP1.0 HTTP 协议老的标准是HTTP/1.0,HTTP 1.0规定浏览器与服务器只保持短暂的连接

CORS 详解

你离开我真会死。 提交于 2020-01-22 23:59:03
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。 它允许浏览器向跨源服务器,发出 XMLHttpRequest 请求,从而克服了AJAX只能 同源 使用的限制。 本文详细介绍CORS的内部机制。 一、简介 CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。 整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。 因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。 二、两种请求 浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。 只要同时满足以下两大条件,就属于简单请求。 (1) 请求方法是以下三种方法之一: HEAD GET POST (2)HTTP的头信息不超出以下几种字段: Accept Accept-Language Content-Language Last-Event-ID Content-Type:只限于三个值 application/x-www-form

从理解tomcat处理Http请求到tomcat优化

为君一笑 提交于 2020-01-22 23:59:00
目录 对tomcat处理http请求的过程的初步理解: tomcat优化: 三个参数:acceptCount、maxConnections、maxThreads 使用NIO: 基于三个参数配置对tomcat优化: 对tomcat处理http请求的过程的初步理解: tomcat的Connector在某个指定的端口上侦听客户请求,接收浏览器发过来的tcp连接请求,创建一个Request和一个Response对象分别 用于和其你去端交换数据,然后会产生一个线程来处理这个请求并把产生的Request和Response对象传给Engine,从Engine中获得响应 并返回给客户端。而Engine下封装的就是我们的web应用的处理过程。在默认NIO的情况下,这样一个过程是由单独的线程去实现的,也就是这个过程是并发的。 既然是并发,也就有了开发中要对tomcat做并发性能优化,目的是提高吞吐量。 tomcat优化: 三个参数:acceptCount、maxConnections、maxThreads tpmcat处理请求时,会在accept队列中接收连接(当客户端向服务器发送请求时,如果客户端与OS完成三次握手建立了连接,则OS将该连接放入accept队列);在连接中获取请求的数据,生成request;然后会有单独线程去调用servlet容器处理请求;返回response。

HTTP Keep-Alive模式

空扰寡人 提交于 2020-01-22 22:51:44
故事发生在10月份的一次面试经历中,本来我不想说出来丢人显眼,但是为了警醒自己和告诫后人,我决定写成博文发出来。因为在面试过程中,我讲在2009年写过QQ农场助手,在这期间深入学习了HTTP协议,而且在2010-05-18写了博文: HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等 。面试官说既然我熟悉HTTP协议,就问“当HTTP采用keepalive模式,当客户端向服务器发生请求之后,客户端如何判断服务器的数据已经发生完成?” 说实话,当时我懵了,一直没有关注过keepalive模式。我只知道: HTTP协议中客户端发送一个小请求,服务器响应以所期望的信息(例如一个html文件或一副gif图像)。服务器通常在发送回所请求的数据之后就关闭连接。这样客户端读数据时会返回EOF(-1),就知道数据已经接收完全了。 我就这样被面试官判了死刑!!!说我完全停留在表面,没有深入(当时真的很受打击,一直自认为技术还不错!)。我当时真的很想找各种借口: 之前没有用到HTTP的keepalive模式,所以没有深入 好久没有用HTTP协议,细节忘了 实习的东西跟HTTP协议没有关系,用得少了就忘了 。。。。。。 觉得各种解释都是那么苍白无力!我再次感叹书到用时方恨少,也感叹一个人的时间是多么的有限(曾一度想成为一个IT专业全才),根本没有精力面面俱到

idea的使用9——REST Client

拈花ヽ惹草 提交于 2020-01-22 12:38:00
在idea中集成了REST Client工具,这个工具在开发中很好的帮助我们对请求进行测试。 点击菜单栏的Tools——HTTP CLient——Test Restful Web Service,如图 打开之后,在下方会出现类似postman的请求框,如图: HTTP method:请求的类型 Host/Post:当前项目的请求路径与端口。例如: http://localhost:9090 Path:访问资源的URI。例如:/doGet/100 填写好相应的信息之后,点击运行,如图: 运行结果: Post请求类似,只需要将Http Method改成Post,修改请求路径,添加请求参数信息即可,例如: 来源: CSDN 作者: 武汉小喽啰 链接: https://blog.csdn.net/weixin_43318134/article/details/104066351

计网笔记

試著忘記壹切 提交于 2020-01-22 11:04:26
应用层 应用程序的体系结构 目前主要的网络应用程序体系结构有以下两种:客户-服务器体系结构和P2P体系结构。 客户-服务器体系结构 :有一个总是打开的主机称为 服务器 ,服务于来自其他称为 客户 的的主机的请求;一个典型例子就是Web应用程序。Web服务器响应来自与客户端程序的请求,提供请求的对象,客户与客户之间并不会相互通信。 P2P体系结构 :应用程序在间断连接的主机之间直接通信,这些主机被称为对等方。目前流量密集型应用都是用P2P体系结构,包括文件共享(比如BitTorrent)、对等放协助下载器(迅雷)、某些因特网电话和视频应用(Skype)。 应用层的主要协议 应用层主要有以下协议:超文本传输协议(HyperText Transfer protocol,HTTP),简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)和域名系统(Domain Name System,DNS)。 1.超文本传输协议(HTTP) HTTP概述 HTTP定义了客户程序和服务器程序进行报文交换的方式,包括Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。 Web页面由对象组成,一个对象只是一个文件,例如是一个HTML文件、一个JPEG的图片或者一段视频;它们可以通过URL进行地址寻址。 HTTP使用TCP作为它的支撑运输协议

PHP $_SERVER 用法

只愿长相守 提交于 2020-01-22 09:23:06
$_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关。 $_SERVER['argv'] #传递给该脚本的参数。 $_SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式)。 $_SERVER['GATEWAY_INTERFACE'] #服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。 $_SERVER['SERVER_NAME'] #当前运行脚本所在服务器主机的名称。 $_SERVER['SERVER_SOFTWARE'] #服务器标识的字串,在响应请求时的头部中给出。 $_SERVER['SERVER_PROTOCOL'] #请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。 $_SERVER['REQUEST_METHOD'] #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。 $_SERVER['QUERY_STRING'] #查询(query)的字符串。 $_SERVER['DOCUMENT_ROOT'] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。 $_SERVER['HTTP_ACCEPT'] #当前请求的 Accept: 头部的内容。 $_SERVER['HTTP_ACCEPT_CHARSET'] #当前请求的

前端性能毫秒必争方案(二)HTTP缓存

扶醉桌前 提交于 2020-01-22 09:14:12
web最好的体验是不需要与服务器通信 响应消除所有的网络延迟,并避免数据传输的数据开销。 为了实现这一目标,HTTP规范允许服务器返回多个不同的缓存控制指令来控制如何,以及多长时间可以通过浏览器和其他中间缓存缓存单个响应。 0.0.1. 好在每个现代浏览器都自带了 HTTP 缓存实现功能。 您只需要确保每个服务器响应都提供正确的 HTTP 标头指令,以指示浏览器何时可以缓存响应以及可以缓存多久。 0.0.2. 作为开发者,怎么利用HTTP Cache? 浏览器会替我们完成所有工作,它会自动检测之前是否指定了验证令牌,它会将验证令牌追加到发出的请求上,并且它会根据从服务器接收的响应在必要时更新缓存时间戳。 0.0.3. 唯一要做的 就是确保服务器提供必要的 ETag 令牌。检查您的服务器文档中有无必要的配置标志。** 0.0.4. 送上Ngix 实战配置,不玩虚的 # 为JS 文件添加长时间缓存 location ~* \.js$ { add_header "section" "long expire"; # 仅供说明 add_header Cache-Control "max-age=31536000"; } # 或者为JS文件删除ETags location ~* \.js$ { add_header "section" "no etags"; # 仅供说明 etag off;