响应时间

Nginx 配置请求响应时间

放肆的年华 提交于 2019-12-23 17:34:12
1.常见默认nginx.conf配置日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for "|$request_time|$upstream_response_time'; (1)request_time 官网描述:request processing time in seconds with a milliseconds resolution; time elapsed between the first bytes were read from the client and the log write after the last bytes were sent to the client 。 指的就是从接受用户请求的第一个字节到发送完响应数据的时间,即包括接收请求数据时间、程序响应时间、输出 响应数据时间。 (2)upstream_response_time 官网描述:keeps times of responses obtained from upstream servers; times are

高并发与多线程

丶灬走出姿态 提交于 2019-12-23 00:14:37
一、什么是高并发 高并发(High Concurrency)是一种系统运行过程中遇到的一 种 “短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求、数据库的操作等。 二、高并发的处理指标 高并发相关常用的一些指标有: 响应时间、吞吐量、每秒查询率QPS、并发用户数 1、响应时间(Response Time) 响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间 2、吞吐量(Throughput) 吞吐量:单位时间内处理的请求数量。 3、每秒查询率QPS(Query Per Second) QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。 4、并发用户数 并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。 三、高并发和多线程的关系和区别 “高并发和多线程”总是被一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程 3.1、多线程 多线程是Java的特性,因为现在cpu都是多核多线程的,可以同时执行几个任务,为了提高jvm的执行效率, Java提供了这种多线程的机制,以增强数据处理效率。

开发之缓存与数据库优化

核能气质少年 提交于 2019-12-20 02:09:10
此文仅入门,需要扩展挖深,自行钻研 缓存-redis 数据库-mysql 1. 缓存 什么是缓存? 定义 缓存是系统快速响应的一种关键性技术,是一组被保存起来以备将来使用的东西,介于应用开发和系统开发之间,是产品经理们经常顾及不到的地方,也是技术架构设计的非功能性约束。 分类 按软件系统所处的位置不同分类 客户端缓存 服务端缓存 网络中的缓存 按规模和部署方式分类: 单体缓存 缓存集群 分布式缓存 为什么要用缓存? 为什么要用缓存,我们这里仅从软件开发层面来分析,首先你必须了解关于系统的性能的一些指标。 系统的性能的指标一般包括: 响应时间:系统对用户的请求作出的响应时间,它完整的记录了整个系统处理请求的时间。 延迟时间:一般指系统处理完请求后,由于网络传输到用户之间的网络延迟时间。 吞吐量:指单位时间内系统处理请求的数量。无并发的系统中,它与响应时间成反比。 并发用户数:指系统能够同时承载的正常使用系统功能的用户数量,它比 吞吐量更能直观的反应系统的性能 资源利用率:反映的是一段时间内资源平均被占用的情况 系统的性能,反映在从浏览器到网络,再到服务器,甚至数据库等各个应用层面。而在各个层面使用缓存将大大提升整个系统的性能。 缓存离客户端越近,响应时间则越快;缓存离数据库越近,则响应时间越长。 缓存是一种用空间换时间的概念。 如果带宽收费(流量付费),那么缓存就是变相的省钱利器。

lr性能测试结果分析原则

烂漫一生 提交于 2019-12-17 08:08:09
分析原则: 具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点) 查找瓶颈时按以下顺序,由易到难。 服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)〉服务器操作系统瓶颈(参数配置)〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等) 注:以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对一些要求低的,我们分析到应用系统在将来大的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪儿就够了。 分段排除法 很有效 分析的信息来源: 1)根据场景运行过程中的错误提示信息 2)根据测试结果收集到的监控指标数据 一.错误提示分析 分析实例: 1)Error: Failed to connect to server "payment.baihe.com″: [10060] Connection Error: timed out Error: Server "user.baihe.com″ has shut down the connection prematurely 分析: A、应用服务死掉。 (小用户时:程序上的问题。程序上处理数据库的问题) B、应用服务没有死 (应用服务参数设置问题) 例:在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示

大型网站的灵魂——性能

夙愿已清 提交于 2019-12-17 02:02:05
前言 在前一篇随笔 《大型网站系统架构的演化》 中,介绍了大型网站的演化过程,期间穿插了一些技术和手段,我们可以从中看出一个大型网站的轮廓,但想要掌握设计开发维护大型网站的技术,需要我们一步一步去研究实践。所以我打算写一个系列,从理论到实践讲述大型网站的点滴,这也是一个共同学习的过程,希望自己能坚持下去。系列大概会分为两部分,理论和实践,理论部分尽量通俗易懂,也要讲一些细节。实践部分会抽取一些技术做实践,将方法、解决问题过程分享出来。 本文将讲述大型网站中一个重要的要素,性能。 什么是性能 有人说性能就是访问速度快慢,这是最直观的说法,也是用户的真实体验。一个用户从输入网址到按下回车键,看到网页的快慢,这就是性能。对于我们来说,需要去挖掘这个过程,因为这决定我们怎么去做性能优化。 这中间发生了什么? 用户访问网站的整个流程:用户输入网站域名,通过DNS解析,找到目标服务器IP,请求数据经互联网达到目标服务器,目标服务器收到请求数据,进行处理(执行程序、访问数据库、文件服务器等)。处理完成,将响应数据又经互联网返回给用户浏览器,浏览器得到结果进行计算渲染显示给用户。 我们把整个过程,分为三段路径: 1、第一段在用户和浏览器端,主要负责发出用户请求,以及接受响应数据进行计算渲染显示给用户; 2、第二段在网络上,负责对请求数据、响应数据的传输; 3、第三段在网站服务器端

什么才是真正的异步??

假装没事ソ 提交于 2019-12-15 21:05:05
异步定义 关于异步的定义,网上有很多不同的形式,但是归根结底中心思想是不变的。无论是在http请求调用的层面,还是在cpu内核态和用户态传输数据的层面,异步这个行为针对的是调用方: 一个可以无需等待被调用方的返回值就让操作继续进行的方法 在多数程序员的概念中一般是指线程处理的层面: 异步是计算机多线程的异步处理。与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程 可以这样通俗的理解,异步主要解决的问题是不阻塞调用方,调用方这里可以是http请求的发起者,也可以是一个线程。 但此处需要明确的是:异步与多线程与并行不是同一个概念。 CPU密集型操作 我听有的同学说,异步解决的是IO密集型的操作,菜菜觉得是不准确的。异步同样可以解决CPU密集型操作,只不过场景有限而已。有一个前提:利用异步解决CPU密集型操作要求当前运行环境支持多线程才行,比如javascript这个语言,本质上它的运行环境是单线程的,所以对于CPU密集型操作,javascript会显得力不从心。 异步解决CPU密集操作一般情况下发生在同进程中,为什么这么说呢,如果发生在不同机器或者不同进程在很多情况下已经属于IO密集型的范围了。这里顺便提醒一下:IO操作可不单单是指磁盘的操作,所有有输入/输出(Input/Output)操作的都可以泛称为IO。 举个栗子吧

【消息队列】ActiveMQ知识点

送分小仙女□ 提交于 2019-12-10 15:29:57
1. 什么是ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位 2.消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。 异步处理 , 应用解耦 , 流量削锋 和 消息通讯 四个场景 2.1 异步处理 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种: 1.串行方式;2.并行方式 (1)串行方式:将注册信息写入 数据库 成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端 2)并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间 假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。 因为CPU在单位时间内处理的请求数是一定的,假设CPU在1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。并行方式处理的请求量是10次(1000/100) 小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间

【效率】【性能】接口响应时间(使用fiddler工具、pythton request的elapsed方法)

[亡魂溺海] 提交于 2019-12-10 03:45:29
一、使用fiddler工具查看接口响应时间 测试项:http接口响应时间 测试工具:fiddler 查看方法: (1)选中单条URL,在右侧的视图中选择statistics->overalll elapsed 的值为接口响应时间 (2)设置把此字段列出来的方法: 在URL那一栏右键点击,选择customize columns,然后在弹框中选择session timers、overall_elapsed 点击add,添加成功后,效果如下: 通过监控此响应时间,比如发现一个接口响应时间超过5S,设置超过10S了,可暴露出具体哪个接口慢,通过优化接口的响应时间提升产品的性能,用户体验(对应的质量指标是效率)。 二、python+request查看接口响应时间 #encoding:utf-8 import requests import logging logging.basicConfig(level=logging.NOTSET) url="http://cn.python-requests.org/zh_CN/latest/" r = requests.get(url) logging.info("begin") s=r.elapsed.total_seconds() logging.info("%s接口响应时间:%s",url,s) logging.info("finish")

JMeter性能测试,完整入门篇

。_饼干妹妹 提交于 2019-12-08 13:06:29
原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。 本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。 运行环境为Windows 10系统,JDK版本为1.8,JMeter版本为3.3。 2. Jmeter安装 2.1 JDK安装 由于Jmeter是基于java开发,首先需要下载安装JDK (目前JMeter只支持到Java 8,尚不支持 Java 9) 1. 官网下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 2. 选择Java SE 8u151/ 8u152,点击JDK下载 3. 安装下载的JDK 4. 配置系统环境变量 2.2 JMeter安装 官网下载地址: http://jmeter.apache.org/download_jmeter.cgi 下载最新JMeter 3.3版本:apache-jmeter-3.3.zip

第二章 MySQL基准测试

情到浓时终转凉″ 提交于 2019-12-06 10:19:26
基准测试是针对系统设计的一种压力测试,通常的目标是为了掌握系统的行为。但也有其他原因,如重新某个系统状态,或者是做新硬件的可靠性测试。我们将特别讨论一下sysbench,这是一款非常优秀的MySQL基准测试工具。 2.1 为什么需要基准测试 基准测试是唯一有效、可以学习系统在给定的工作负载下会发生什么的方法。基准测试可以观察在不同压力下的行为,评估系统的容量,掌握哪些是重要的变化,或者观察系统如何处理不同的数据。基准测试可以在系统实际负载之外创造一些虚拟场景进行测试。 2.2 基准测试的策略 基准测试有两种主要的策略:一是针对整个系统的整体测试,另外是单独测试mysql。这两种策略也被称为集成式(full-stack)以及单组件式(single-component)基准测试。 2.2.1 测试何种指标 吞吐量 吞吐量指的是单位时间内的事务处理数。这一直是经典的数据库应用测试指标。一些标准的基准测试被广泛地引用,如TPC-C,而且很多数据库厂商都努力争取在这些测试中取得好成绩。这类基准测试主要针对在线事务处理(OLTP)的吞吐量,非常使用于多用户的交互式应用。常用的测试单位是每秒事务数(TPS),有时也采用每分钟事务数(TPM)。 响应时间或者延迟 这个指标用于测试任务所需的整体时间。根据具体的应用,测试的时间单位可能是微妙、毫秒、秒或者分钟。根据不同的时间单位可以计算出平均响应时间