简单记录服务器耗时

简介: 简单记录服务器耗时

周末了,来点简单轻松的内容。


在日常的开发过程中,我经常会关注每个接口的响应速度,准确的说是服务器从接收到请求然后进行业务逻辑处理,最后完成响应这段过程的耗时时长。当然这个小功能中间件早就帮我们做好了,不过我们自己如何简单的去实现它呢?


计时嘛,很简单啊。请求进来之后标记一下时间点,等到完成之后在标记一下计算时间差就行了嘛。


是的,没错。那么我们如何区分每个不同的请求呢,自己维护一个队列记录吗?还有,请求和响应两步分别标记时间是否就意味着我们需要分别调用两次处理函数呢?


当然不是。每个请求都有一个自己对应的 request、response 对象,当请求进来时直接为 request 对象添加自定义的属性记录第一个时间点即可,同时直接监听 response 的 finish 事件。


示例:


是不是真的很简单,处理函数只在最开始调用一次,计算时间间隔调用 node 自带的 process.hrtime 函数即可。


最后再用 curl  模拟不同的请求测试下:

看到这里是不是有一种很熟悉的感觉。


监听请求的响应耗时有助于我们发现服务器接口的性能瓶颈,而我们若是进一步记录不同接口的访问频率则可能帮助我们发现业务上的优化改进点(比如用户多次调用了商品描述接口,但是却很少调用订单买入接口,则我们可能会思考是不是业务流程不够简洁、或者买入的点击按钮不够显眼等等)。


好吧,就写这么点内容了。

目录
相关文章
|
安全 网络安全 网络虚拟化
深入解析IDS/IPS与SSL/TLS和网络安全
防火墙 防火墙是一种网络安全设备,用于监控和控制网络流量,保护网络免受未经授权的访问、恶意攻击和威胁。防火墙可以基于规则进行数据包过滤,允许或阻止特定类型的流量通过。常见的防火墙类型包括网络层防火墙和应用层防火墙。 防火墙就像是你家的安全门,保护你的电脑网络不受坏人的攻击。它像一个警卫一样,只允许那些你信任的人进入你的网络,而把不好的人拒之门外。
533 0
libtool: Version mismatch error 解决
libtool: Version mismatch error 解决
928 0
|
SQL 监控 关系型数据库
使用SQL语句查询操作耗时的技巧与方法
在数据库管理和优化过程中,了解SQL查询操作的耗时是至关重要的
1712 0
|
安全 搜索推荐 开发工具
“大厂”角力移动办公系统市场,钉钉和企微向左、WorkPlus向右
随着互联网行业的发展,移动办公软件市场在中国迅速崛起,2021年市场规模达264.2亿元,预计2023年将增长至330.1亿元。钉钉和企业微信成为市场领导者,凭借其内部管理与协同功能吸引大量用户。两者虽有相似之处,但各有特色,钉钉侧重内部管理,企业微信注重内外部连接。然而,SaaS模式的数据安全性和定制化能力成为挑战,部分企业转向私有化部署,如WorkPlus,它提供全私有化、个性化定制和系统集成解决方案。政策推动数字化发展,移动办公行业迎来机遇,不同厂商可根据客户需求提供SaaS或私有化部署服务。
393 1
|
设计模式 算法 Dubbo
风向标!准备跳槽的小伙伴可以看下《2023 Java offer 收割指南》
大厂的面试题一直都是风向标,动态必须关注! 想高效快速地拿到心仪 offer,一定要从面试官的角度出发,提前做好功课,了解市场的最新风向。
798 0
|
算法
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
738 0
|
SQL NoSQL MongoDB
python MongoClient 创建数据库,并且创建表插入一行数据并查询
要在MongoDB中创建一个数据库、一个集合(在MongoDB中,集合类似于SQL中的表)并插入一行数据,你可以使用MongoDB的官方驱动程序。以下是一个使用Python的pymongo库来执行这些操作的示例: 首先,确保你已经安装了pymongo库。你可以使用pip来安装: bash pip install pymongo 接下来,使用以下Python代码来创建数据库、集合、插入数据并查询: python from pymongo import MongoClient # 连接到MongoDB服务器 client = MongoClient('mongodb://loc
427 0
|
消息中间件 Linux 数据安全/隐私保护
【图解RabbitMQ-4】Docker安装RabbitMQ详细图文过程
【图解RabbitMQ-4】Docker安装RabbitMQ详细图文过程
669 0
|
XML 自然语言处理 Java
【Lua基础 第5章 】unpack()和pack()、Lua 中的文件 I/O、简单模式下io的部分方法、完全模式下file的部分方法、日期和时间、闭包使用
unpack()和pack()、Lua 中的文件 I/O、简单模式下io的部分方法、完全模式下file的部分方法、日期和时间、闭包使用
1340 0
【Lua基础 第5章 】unpack()和pack()、Lua 中的文件 I/O、简单模式下io的部分方法、完全模式下file的部分方法、日期和时间、闭包使用
|
机器人 Linux 网络安全
使用 GO-CQHttp或mirai框架 搭建QQ的机器人
使用 GO-CQHttp或mirai框架 搭建QQ的机器人
1413 0