`
蜗牛慢慢爬
  • 浏览: 7410 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在java商城开发或是jsp商城开发中影响效率的原因分析

阅读更多
java是现在比较流行的软件开发语言,同时也是互联网应用中安全性相对较高的一种开发语言了。被很多的电子金融系统开发企业以及电子商务网站建设企业所看重。虽然说在如今的互联网开发中,它比较有优势,然而用得不当的话,反而会使电子商务网站建设的性能受到影响。下面北京电子商务网站建设企业,就从多年的java商城开发中说说影响java商城系统和jsp商城效率的原因。
   1.缺乏正确的容量规划
   容量规划是一个全面的和发展的过程标准,预测当前和未来的IT环境容量需求。制定合理的容量规划不仅会确保和跟踪当前IT生产能力和稳定性,同时也会确保新项目以最小的风险部署到现有的生产环境中。硬件、中间件、JVM、调整等在项目部署之前就应该准备好。
   2.Java EE中间件环境规范不足
   “没有规矩,不成方圆”。第二个比较普遍的原因是Java EE中间件或者基础架构不规范。在项目初始,新平台上面没有制定合理的规范,导致系统稳定性差。这会增加客户成本,所以花时间去制定合理的Java EE中间件环境规范是必须的。这项工作应与初始容量规划迭代相结合。
   3.Java虚拟机垃圾回收过度
   各位对“java.lang.OutOfMemoryError”这个错误信息是不是很熟悉呢?由于JVM的内存空间过度消耗(Java堆、本机堆等)而抛出的异常。
   垃圾收集问题并不一定会表现为一个OOM条件,过度的垃圾收集可以理解成是JVM GC线程在短时间里进行轻微或超量收集集合数据而导致的JVM暂停时间很长和性能下降。可能有以下几个原因:
   与JVM的负载量和应用程序内存占用量相比,Java堆可能选择的太小。
   JVM GC策略使用不合理。
   应用程序静态或动态内存占用量太大,不适合在32位JVM上使用。
   JVM OldGen随着时间推移,泄漏越来越严重,而GC在几个小时或者几天后才发现。
   JVM PermGen空间(只有HotSpot VM)或本机堆随着时间推移会泄露是一个非常普遍的问题;OOM的错误往往是观察一段时间后,应用程序进行动态调动。
   YoungGen和OldGen的比例空间与你的应用程序不匹配。
   Java堆在32位的VM上太大,导致本机堆溢出,具体可以表现为OOM试着去链接一个新的Java EE应用程序、创建一个新的Java线程或者需要计算本地内存分配任务。
   建议:观察和深入理解JVM垃圾回收。启动GC,根据健康合理的评估来提供所有的数据。记住,GC方面的相关问题不会在开发中或者功能测试时发现,它需要在多用户高负载的测试环境下发现。
   4.与外部系统集成过多或过少
   导致Java EE性能差的第四个原因是高分布式系统,典型案例是电信IT环境。在这个环境中,一个中间件领域(例如,服务总线)很少会做所有的工作,而仅仅是把一些业 务“委托”给其他部分,例如产品质量,客户资料和订单管理,到其他Java EE中间件平台或遗留系统中,如支持各种不同的负载类型和通信协议的大型机。
   这样的外部系统调用意味着客户端的Java EE应用程序触发创建或重用套接字链接从外部系统中读写数据。根据业务流程的实施和实现可以配置成同步调用或异步调用。需要注意的是,响应时间会根据外部 系统的稳定状况进行改变,所以通过适当的使用超时来保护Java EE应用程序和中间件也是非常重要的。
   下面这3种情况是经常出现问题和性能降低的地方:
   同步和相继调用太多的外部系统。
   在Java EE客户端应用程序和外部系统之间链接超时,使数据丢失或者值太高导致客户端线程被卡住,从而导致多米拉效应。
   超时,但程序仍正常执行,可是中间件不处理这种奇怪的路径。
   最后,建议多进行负面测试,这意味着需要“人为”创造产生这些问题的条件,用来测试应用程序和中间件之间是如何处理外部系统错误。
   5.缺乏适当的数据库SQL调优和容量规划
   大家可能会对这一个感到惊奇:数据库问题。大多数Java EE企业系统是依赖关系型数据库处理复杂的业务流程。一个基础扎实稳固的数据库环境可以确保IT环境有规模的增长,来支持日益不断扩大的业务。
   在实际中,与数据库相关的性能问题是很常见的。由于多数数据库事务处理都是由JDBC数据源执行的(包括关系持久化API,例如Hibernate)。而性能问题最初都会表现为线程阻塞。
   以下是我在10年的工作中,经常出现的关于数据库方面的问题(以Oracle数据库为例):
   孤立的,长时间运行的SQL。主要表现为线程阻塞、SQL没有进行优化、缺少索引、非最佳的执行计划、返回大量数据集等等。
   表或行级数据锁定。当提交一个双阶段事务模型时(例如,臭名昭著的Oracle可疑事务)。Java EE容器可能会留下一些未处理的事务等待最后的提交或回滚,留下的数据锁能触发性能问题,直到最后的锁被移除。例如中间件断电或者服务器崩溃都可能引起这些情况发生。
缺乏合理规范的数据库管理工具。例如Oracle里面的REDO logs,数据库数据文件等。磁盘空间不足,日志文件不旋转等都会触发较大的性能问题和断电情况。
建议:合理的容量规划,包括负载和性能测试都是必不可少的,优化数据环境和及时发现问题。如果是使用Oracle数据库,确保DBA团队定期审查AWR报告,尤其是在上下关联的事件和根源分析过程中。使用JVM线程存储和AWR报告查明SQL运行缓慢的原因或者使用监控工具来做。加强“操作”方面的数据库环境(磁盘空间、数据文件、重做日志、表空间等)以适当的监视和报警。如果不这么做,会让客户端IT环境出现较多的断电情况和花许多时间进行故障调修。
   6.特定应用程序性能问题
   下面关注的是比较严重的Java EE应用程序问题。关于特定应用程序性能问题,总结了以下几个点:
   线程安全的代码问题
   通信API缺少超时设置
   I/O、JDBC或者关系型API资源管理问题
   缺乏适当的数据缓存
   数据缓存过度
   过多的日志记录
   7.Java EE中间件调优问题
   一般Java EE中间件都已经够用了,只是缺少必要的优化。大多数Java EE容器都能有多种方案供你的应用程序和业务进程选择。
   如果没有进行适当的调整和实践,那么Java EE容器可能会处于一种消极的状态。下图是视图和检查列表示例:
   8.主动监控不足
   缺乏监控,并不会带来实际性能问题,但它会影响你对Java EE平台性能和健康状况的了解。最终,这个环境可以达到一个破发点,这可能会暴露出一些缺陷和问题(JVM的内存泄漏,等等)。
   以我的经验来看,如果一开始不进行监控,而是运行几个月或者几年后再进行,平台稳定性将大打折扣。
   也就是说,改善现有的环境永远都不会晚。下面是一些建议:复查现有Java EE环境监测能力和找到需改进的地方。监测方案应该尽可能的覆盖整个环境。监控方案应该符合容量规划进程。
   9.公共基础设施硬件饱和
   这个问题经常在有太多的Java EE中间件环境随着JVM进程被部署到现有硬件上面时看到。太多的JVM进程对有限的物理CPU核心来说是一个真正的程序性能杀手。另外,随着客户端业务的增长,硬件方面也需要再次考虑。
   10.网络延迟
   最后一个影响性能问题的是网络,网络问题时不时的都会发生,如路由器、交换机和DNS服务器失败。更常见的是在一个高度分散的IT环境中定期或间歇性延迟。下面图片中的例子是一个位于同一区域的Weblogic集群通信与Oracle数据库服务器之间的延迟。
   间歇或定期的延迟会触发一些重要的性能问题,以不同的方式影响Java EE应用程序。
   因为大量的fetch迭代(网络传入和传出),涉及大数据集的数据查询问题的应用会非常受网络延迟的影响
   应用程序在处理外部系统大数据负载(例如XML数据)时也会很受网络延迟的影响,会在发送和接收响应时产生巨大的响应间隔。
   Java EE容器复制过程(集群)也会受到影响,并且会让故障转移功能(如多播或单播数据包损失)处于风险中。
   JDBC行数据“预取”、XML数据压缩和数据缓存可以减少网络延迟。在设计一个新的网络拓扑时,应该仔细检查这种网络延迟问题。

本文来源:http://www.shopjsp.com/
分享到:
评论

相关推荐

    Java Web整合开发进阶100例.pdf

    4. **Java Web应用框架**:现代Java Web开发中,广泛应用各种框架以简化开发流程,提高开发效率。典型框架包括Spring框架、Struts2、Hibernate等。其中Spring框架提供的依赖注入、面向切面编程等特性大大简化了企业...

    基于Java的实例开发源码-jsp生产管理系统.zip

    9. **IDE(Integrated Development Environment)**:如Eclipse、IntelliJ IDEA等,是Java开发常用的集成开发环境,提供了代码编辑、调试、构建等一站式功能。 10. **版本控制**:可能使用Git或其他版本控制系统...

    Java高手真经+网络开发卷Source源码

    学习这部分可以理解如何在JSP中集成各种技术,提高开发效率。 5. **jsf.zip** - 另一个关于JSF的文件,可能包含更详细或更新的示例和教程。 6. **emis13(JSP+JavaBean+Servlet).zip** - 专注于JSP、JavaBean和...

    Java语言实例-毕业设计项目:基于Web的博客系统开发(JSP+Servlet+MySQL)-开题报告,论文,答辩PPT参考

    Java Web开发是当前互联网技术中非常重要的一个分支,其中JSP和Servlet技术是Java Web开发的基础技术之一。JSP(Java Server Pages)是一种动态网页技术,能够在服务器端动态生成HTML页面,主要负责视图层的展示;而...

    java基于ssm+jsp超市管理系统源码 带毕业论文+PPT

    资源包中的文件包括一份jsp开发说明.docx文件,它为开发者提供了关于JSP开发的基础知识和一些高级技巧,帮助开发者更快地进入系统开发的角色;jsp超市管理系统lw+ppt.rar文件则包含了该系统的演示文稿,通过该演示...

    JAVA Web 前台开发相关技术入门介绍ppt

    前端开发中常用到的工具有IDE(如IntelliJ IDEA、Eclipse),版本控制工具(如Git),构建工具(如Webpack、Grunt、Gulp),以及各种前端库(如jQuery、Lodash、Moment.js等),它们能显著提升开发效率和代码质量。...

    Java开发技术问题汇集

    Java开发技术问题汇集是一个集合了Java开发者在实际工作中可能遇到的各种问题及解决方案的资源库。这个压缩包包含的文件很可能涵盖了从基础语法到高级框架的广泛主题,涉及到Java、Spring、Struts、Hibernate以及JSP...

    基于Java和前端技术的水果蔬菜商城后台设计源码

    通过对源码的分析和学习,开发者可以深入理解Java在实际项目中的应用,掌握前后端开发中常用技术和实践方法。同时,该系统的源码也可以作为现有商城后台系统升级的参考,或是构建新的电商后台系统的起点。 基于Java...

    仿照小米商城做的java web购物网站.zip

    【标题】:“仿照小米商城做的java web购物网站”是一个基于Java Web技术开发的电子商务平台,旨在模拟小米商城的功能和用户体验。这个项目可能是为了教学、实践或是个人技能提升而创建的,展示了开发者对Java Web...

    Java Servlet+jsp在线考试系统.zip

    Python作为一门通用编程语言,可以用于实现一些辅助工具,比如自动化测试、数据统计分析或是爬虫,为Java主系统提供数据支持。 系统设计通常包括以下几个关键部分: 1. 用户模块:用户注册、登录、个人信息管理等...

    ssm9025大学生兼职平台的设计与开发+jsp.zip

    该项目的JDK版本使用的是JDK1.8,作为最新的Java开发工具包,它引入了lambda表达式、新的日期时间API等特性,为开发提供了更多的便捷和高效性。服务器方面,选用的是tomcat7+,作为一个性能稳定、使用广泛的开源...

    基于Java开发的demo0929项目设计源码

    在demo0929项目中,共有7个JAR包文件,这些JAR包可能包含了第三方库、框架或是工具类库,它们能够提供额外的功能支持,减少代码的冗余,提高开发效率。了解这些JAR包的内容和用途对于理解整个项目架构至关重要。 ...

    21天学通JAVA-WEB开发电子教案(PPT)

    此外,还会涉及MVC(Model-View-Controller)架构,解释其工作原理和优势,并可能介绍如何使用JSTL和EL表达式简化JSP开发。 数据库操作是Web应用不可或缺的一部分,因此,教程会涵盖JDBC,包括连接数据库、执行SQL...

    java-ssm+jsp大学生校园兼职系统实现源码(项目源码-说明文档)

    Spring框架则提供了全面的企业级开发解决方案,包括声明式事务管理、依赖注入等功能,极大地提高了开发效率。MyBatis作为一个数据持久层框架,使得数据库操作变得更加简单直观。 前端技术方面,系统使用了JSP技术,...

    基于java开发的签到小程序

    【标题】:基于Java开发的签到小程序 在IT行业中,Java是一种广泛应用的编程语言,尤其在企业级应用和移动应用开发中占有重要地位。"基于Java开发的签到小程序"是一个利用Java技术构建的轻量级应用程序,主要用于...

    ssm9681基于Java的超市管理系统+jsp.zip

    开发者和学习者可以放心地使用该项目进行学习、开发或是作为毕业设计的实践案例。通过接触这样一个完整的项目,用户不仅能够提升自己在Java编程和Web开发方面的技能,还能够学习如何管理和维护一个企业级应用系统。

    基于Java语言校园快递代取系统的设计与实现+jsp源码(java毕业设计完整源码+LW).zip

    为了进一步提高开发效率和代码质量,项目还使用了Maven3.3作为项目管理和构建工具。在前端技术实现上,系统采用了jsp(JavaServer Pages)技术,为用户提供了丰富的交互体验。 系统的功能设计围绕管理员和普通用户...

    [课设项目]Java-SSM框架开发网络安全宣传网站设计+jsp+MySQL+前后端分离毕业论文和源码.zip

    在开发过程中,我们选用了SSM框架作为项目的技术核心,利用其强大的功能集成,简化了开发流程,提高了开发效率。同时,项目数据库采用了MySQL,其稳定性和高效性得到了广泛认可。此外,我们还配备了完整的开发说明和...

    JSP宝典

    《JSP宝典》是Java Web开发领域的重要参考资料,它涵盖了JSP(JavaServer Pages)技术的深度解析和实践应用。本宝典主要关注第29至31章的内容,这三个章节聚焦于JSP的高级特性、动态网页的实现以及企业级应用开发的...

    jsp+mysql学生信息管理系统增删改查JAVA

    基于JSP和MySQL技术构建的学生信息管理系统,是一种用于存储、更新、检索和删除...在实际开发过程中,文件列表通常会包含诸如数据库脚本、Java源代码文件、JSP页面文件、配置文件和资源文件等,以构成一个完整的系统。

Global site tag (gtag.js) - Google Analytics