前端(简单列举):HTML5、H5、CSS、JavaScript、React、Vue、Angular、NodeJS、WebSocket、HTTP
后台:中间件(Tomcat、Jetty)、消息中间件(Kafka、RabbitMQ、RocketMQ等)、开发框架(Springboot/Cloud)、Dubbo等,ORM:Hibernate、MyBatis、Spring JPA等
数据库:关系数据库(MySQL、Oracle等)、NoSQL数据库(Redis MongoDB HBase等)
集成工具:Git、Gitlab、CVS、Jenkins、Sonar、Maven等
容器及编排工具:Docker、Kubernetes等
监控工具:Prometheus、Skywalking、Zabbix等
操作系统:Linux系列(CentOS、Fedora、Debian、Ubuntu之一或者多种)
RT:为响应时间
TPS:为吞吐量(Transaction per second)
随着系统负载的增加,响应时间和吞吐量会增长,到达临界点(标记点为3点)时,吞吐量不再增加,继续增加负载会导致过载(比如我们在计算机上开启的软件过多导致系统卡死),吞吐量会受到拖累而减小,响应时间陡增(标记点为4点)。此时标记点3点代表了系统的最大处理能力。如果标记点3点的处理能力不能满足要求,那被测试的系统性能就堪忧了,需要进行性能诊断和优化。
有时,我们会要求响应时间要小于一个标准,比如请求某一个页面需要响应时间控制在3秒之内,时间长了用户体验差。假设图中标记点1、2、3的响应时间都不满足要求,即使吞吐量达到要求,我们也需要想办法缩短响应时间。再次假设标记点2点处的响应时间和吞吐量都满足性能要求,那么说明性能良好,而且性能还有提升空间,标记点3才是系统性能的极限,标记点4是系统性能的"强弩之末"。
因此,我们在讨论性能时,至少要从系统响应时间与吞吐量两个维度来看是否满足性能要求;另外对于主机的资源(CPU、内存、磁盘、网络等)使用率也需要关注,太低则浪费,太高则危险。正如我们不会让发动机一直运行在极速情况下一样,也不会让计算机一直处在峰值处理能力状态,以延长机器的使用寿命及减少故障的发生。
图示的性能曲线诠释了软件性能的变化趋势。当取得软件的性能曲线后,我们在运营系统过程中就能够做到心中有数,知道什么时候要扩展,什么时候可以减少机器资源(比如云上的动态扩容)