You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
生成的 log 文件分析,生成报告包含六部分:Shared libraries、JavaScript、C++、Summary、C++ entry points 和 Bottom up (heavy) profile,JavaScript 部分列出了 JavaScript 代码执行所占用的 CPU ticks(CPU 时钟周期),C++ 部分列出了 C++ 代码执行所占用的 CPU ticks,Summary 列出了各个部分的占比,Bottom up 列出了所有 CPU 占用时间从大到小的函数及堆栈信息。
高并发
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间RT(Response Time)、吞吐量(Throughput)、每秒查询率 QPS(Query Per Second)、每秒事务处理率 TPS (Transactions Per Second)、并发用户数等。
从服务端视角看高并发服务端处理请求需要耗费服务端的资源,比如能同时开启的进程数、能同时运行的线程数、网络连接数、CPU、I/O、内存等,由于服务端资源是有限的,那么服务端能同时处理的请求也是有限的。
高并发问题的本质就是:资源的有限性
高并发带来的问题
服务端的处理和响应会越来越慢,甚至会丢弃部分请求不予处理,更严重的会导致服务端崩溃。高并发问题并不是互联网应用独有。
高并发问题的层面比如:前端请求、Web服务器、Web应用、数据库等。
优化高并发的基本思路
客户端处理的基本原则是能不访问服务端就不要访问
服务端的处理基本原则是分而治之,并提高单个请求的处理速度
增加资源供给
请求分流
使用集群
分布式的系统架构
应用优化
Web 压力测试
压力测试(Stress Test),也称为强度测试、负载测试,通过加压测试,确定一个系统的瓶颈或者应用不能服务的性能点,来获得应用系统能提供的最大的服务级别的测试。目的是验证软件是否符合客户需求,提高应用系统可用性,减少系统的宕机时间和因此带来的损失。最终产物是包括测试环境,方法和结果的测试报告。
测试工具
autocannon
一款用 Node.js 编写的快速 HTTP / 1.1基准测试工具。
loadtest
提供 CLI 可对选定的 HTTP 或 WebSockets URL 运行负载测试,也允许通过 API 轻松集成到测试代码中。
性能文件与分析
通过压测工具可帮助我们快速找到有问题的接口或方法(出现阻塞/内存泄漏),对接口或方法进行剖析并不可视化,可能很多时候需要一份性能报告,进行更好的剖析。
V8 Profiler
V8 官方提供了Profiler工具 使用快速收集性能数据
生成报告
在启动命令中加上
--prof
,在项目根目录会生成isolate-xxxxxxx-v8.log
格式的文件,用来记录运行期间的调用栈和时间等信息。分析报告
生成的 log 文件分析,生成报告包含六部分:Shared libraries、JavaScript、C++、Summary、C++ entry points 和 Bottom up (heavy) profile,JavaScript 部分列出了 JavaScript 代码执行所占用的 CPU ticks(CPU 时钟周期),C++ 部分列出了 C++ 代码执行所占用的 CPU ticks,Summary 列出了各个部分的占比,Bottom up 列出了所有 CPU 占用时间从大到小的函数及堆栈信息。
检查性能
在早期
node v6.3
版本以前,通过Node Inspector
调试检查性能,从v6.3
之后 node 内置了检查器 inspect具体相关调试:调试指南、Node 调试工具入门教程
Other Resources
浅谈WEB中的高并发
程序员们的三高:高并发、高性能、高可用
怎样正确做 Web 应用的压力测试
Node.js运行原理、高并发性能测试对比及生态圈汇总
The text was updated successfully, but these errors were encountered: