在Medium上看到一个非常棒的用来描述各种IO模型的伪代码,这些例子很好地展示了阻塞非阻塞、同步和异步的特点。 常见的I/O 类型 Blocking Non-blocking Asynchronous API write, read write, read + poll / select aio_write, aio_read 以读操作为例,不同的IO模型。对象和函数都是抽象的: Followi … 继续阅读
分类目录归档:高并发
一个简单可用的Nginx负载均衡配置文件
记录一下,一个简单可用的Nginx负载均衡配置文件。 本地测试是可以用的。 本地环境: 开启了三个本地服务: 127.0.0.1:8082; 127.0.0.1:8083; 127.0.0.1:8084; 每个服务器,提供两个测试接口: 以127.0.0.1:8082服务为例: http://localhost:8082/ # index http://localhost:8082/user?us … 继续阅读
上下文切换
虽然上下文切换,这个名词经常听,但是还有有必要重温和加强理解一下。 英文解释 A context switch occurs when a computer’s CPU switches from one process or thread to a different process or thread. Context switching allows for one CPU to … 继续阅读
Springboot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能
Springboot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能 Micrometer Micrometer 为 Java 平台上的性能数据收集提供了一个通用的 API,它提供了多种度量指标类型(Timers、Guauges、Counters等),同时支持接入不同的监控系统,例如 Influxdb、Graphite、Prometheus 等。我们可以通过 Mi … 继续阅读
性能瓶颈分析
整理和总结一些常见的性能瓶颈分析思路和工具。 CPU分析 当程序响应变慢的时候,首先使用top、vmstat、ps等命令查看系统的cpu使用率是否有异常,从而可以判断出是否是cpu繁忙造成的性能问题。其中,主要通过us(用户进程所占的%)这个数据来看异常的进程信息。当us接近100%甚至更高时,可以确定是cpu繁忙造成的响应缓慢。一般说来,cpu繁忙的原因有以下几个: 线程中有无限空循环、无阻塞、 … 继续阅读
性能指标
系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。 单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。 系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间 QPS(TPS):每秒钟request/事务 数量 (很多人经常会把并发数和TPS理解混淆) 并发数: 系统同时处理的request … 继续阅读