程序员最不愿见到的就是程序抛出异常
经常会做些激进的测试,然后各种各样的异常都会抛出来
用户量增多,并发量加大如果没有去加以控制会发生一堆让你头疼的问题.
如:
cpu 达到100%,
占用内存增大,垃圾回收时间增长,jvm卡顿
流量增大,
线程安全/阻塞
数据库线程池耗尽,获取不到连接 抛出一些异常.这些异常然后会导致业务出现异常,然后数据出现错误.
并发量增加,大量的单例模式导致 业务层面的线程安全问题凸显
还有的破坏性测试,结果发现业务数据会出现混乱
一堆喜闻乐见的问题.
现在,我们来处理这些问题:
1.数据库连接池获取连接超时
假如数据库连接池设定的是2个,获取连接超时时间为6秒,有3条sql同时被执行.那么其中2条会正常的执行,第三条则等待前两条sql执行完毕,如果是这样就不会有问题.但是实际上第三条也在执行,这个时候这条sql也在尝试获取连接,并且开始计时.如果6秒后还没获取到连接就会抛出获取连接失败的异常.
如果你没有处理sql超时的问题,最好是不要设置超时时间.因为抛出异常后会导致业务数据出错.
应该插入的没插入,应该update的没update. 当然如果有很多业务,那么会导致其他业务都阻塞起来.
我觉得,这件事情嘛.就随他去好了!谁叫你弄那么多超出处理能力的业务呢!
另外一种方法就是上层控制,就好像做个大坝把水拦起来.
2.cpu100%
如果不是bug,业务量增大cpu必然会上升接近100%.jdk里面有很多监控工具. 还有性能分析工具.这个问题就对着分析工具一个方法一个方法的排查吧
3.流量增大
流量似乎不是个问题,但是看着监控软件几M几M的进进出出 还是有些担心.高访问量io操作增加,编解码压力增大.会导致cpu增高,垃圾回收的任务加大. 编解码处理能力达到上限,业务访问照成延迟.这个问题,也只能一点点优化了.
4.线程安全/阻塞
线程安全问题似乎无解,为了保证业务线程安全.该加的锁不会少.当然能不加的锁不要加.影响是非常恶劣的.
另外,业务间的线程安全问题是个更棘手更难处理的问题.在暴力测试下你才会重视这种事情
5.jvm卡顿
没有细致的研究过
相关推荐
Java高并发高性能分布式框架的设计与微服务架构紧密相关,旨在构建可扩展、容错性强、技术选型灵活的系统。微服务架构的核心理念是将大型应用程序拆分为一系列小型、独立的服务,每个服务专注于特定的业务功能,通过...
在基于Java的网络聊天系统开发中,会涉及到以下关键知识点: 1. **开发环境**:通常会选择集成开发环境(IDE),如Eclipse或IntelliJ IDEA,这些工具提供了代码编辑、编译、调试和版本控制等一系列功能。 2. **...
#### 二、系统开发背景及目标 - **开发背景**:当前,大量的纸质图书资源需要高效地管理和利用,传统的手工管理方式已经无法满足现代社会的需求。 - **开发目标**:构建一个易于使用、功能齐全且性能稳定的图书管理...
性能需求(3.2)可能涉及系统响应时间、并发用户数、数据处理能力等,确保系统在高负载下仍能稳定运行。环境需求(3.3)包括硬件配置、操作系统、网络环境等,确保系统能在实际环境中正常运行。相关信息和数据(3.4...
- **高稳定性**:确保系统运行稳定可靠,即使在高并发访问的情况下也能保持良好的响应速度。 #### 开发意义 - **库存管理优化**:通过对库存数据的实时监控与智能分析,有效降低库存积压风险,提高资金周转率。 - ...
- 对于读者,系统需要支持高并发访问(至少5000个并发用户)。 - 数据录入、检索等功能需快速准确。 - **可靠性与安全性要求**: - 保证数据导入和查询的速度。 - 实现严格的权限控制,防止非法访问。 - 定期...
同时,考虑到未来可能的高并发访问,系统应进行压力测试,以确保在大量用户同时使用时也能正常运行。对于数据处理能力,需要在实际运营环境中验证其性能,以确保能处理大量图书和用户的操作。 总的来说,图书出租...
实时系统作为一类特殊的操作系统,以快速响应时间和高可靠性著称,常用于控制和监控环境,如工业自动化、医疗设备和航空航天等。与分时系统不同,实时系统更加侧重于对事件的快速及时处理,而分时系统则更关注多任务...
- DB2:在并行性和多节点环境下表现出色,数据库分区功能支持高并发和大规模数据处理。 3. 安全性: - SQL Server:未获得ISO的最高安全认证,可能在安全性方面相对较弱。 - Oracle和DB2:均获得了ISO的最高认证...
这份试卷全面覆盖了Linux系统编程的关键知识点,旨在检验考生对于操作系统原理、进程管理、通信机制、数据库操作以及并发控制的理解和应用能力。通过这样的考试,考生可以提升在实际开发环境中解决系统级问题的能力...
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,专门...总之,Node.js以其独特的设计思路和高效的执行机制,成为了现代Web开发的重要技术之一,尤其在构建快速响应、高并发的网络应用方面,展现出强大的竞争力。
这份说明书旨在为开发团队提供清晰的指导,确保系统功能的完备性、性能的优化以及用户界面的友好性。 1. 编写目的 编写这份详细设计说明书的主要目的是为图书馆管理系统的设计提供明确的蓝图,以便于开发者理解系统...
在嵌入式系统中,任务是并发执行的基本单位,它们可以按照优先级分配资源。 3.4.1 任务优先级 每个任务都有一个优先级,高优先级的任务优先执行,除非有更高优先级的任务变为就绪。 3.4.2 任务的堆栈 任务的执行...
Linux系统编程是嵌入式开发领域中的重要组成部分,主要涉及操作系统与应用程序之间的交互。这份试卷主要测试了考生对Linux系统编程基础知识的掌握,包括进程管理、进程间通信、文件I/O以及系统调用等方面。 首先,...
Oracle强调多用户的并发访问和故障恢复能力,提供了Developer 2000这样的完整开发工具套件,便于用户构建自己的应用程序。其SQL支持和数据的可移植性是其主要优点,适合大型或中型应用系统,尤其在客户机/服务器架构...
IBM GPFS(General Parallel File System)是一种共享文件系统,由IBM公司开发,可以实现并行应用和串行应用的文件系统操作服务。GPFS文件系统架构分为三个层面:存储层、GPFS服务器层和客户端层。存储层将存储通过...
- **多线程**:掌握并发编程,理解线程同步机制,如synchronized关键字,wait/notify机制。 - **网络编程**:学习Socket编程,实现客户端和服务器通信。 - **Java IO流**:理解输入输出流,实现文件读写、上传...
Java 语言是一种面向对象的编程语言,它简单、面向对象、不依赖于机器的结构、具有可移植性、鲁棒性、安全性,并且提供了并发机制、具有很高的性能。 Java 语言的特点是拥有封装、继承和多态三大特点,提供了简单的...
1. **亿级并发架构演进**:讲解高并发系统的架构设计和优化策略。 2. **Linux基础**:熟悉Linux操作系统,包括命令行操作、文件系统、进程管理等。 3. **Tomcat环境搭建**:部署Java Web应用的服务器配置。 4. **...