我需要什么来抵消使用Spring框架导致的性能下降?

我需要什么来抵消使用Spring框架导致的性能下降?,spring,Spring,我正在使用Spring和Hibernate创建一个企业应用程序 现在,由于框架对底层J2EE进行了抽象 架构,显然我的应用程序的运行时性能会受到影响 我需要知道的是,我需要考虑的一个因素是,对于一个运行ReHATHLINUX 3 +的应用程序的单个主机服务器,我需要最小的SPECUPREPROS+RAM等,并且只致力于运行这个应用程序。如果同时访问用户基数每月增加100,那么这将产生效率得分,比如说10分之8 不使用集群。我严重怀疑使用Spring是否会显著影响性能 您认为Spring的哪些方面

我正在使用Spring和Hibernate创建一个企业应用程序

现在,由于框架对底层J2EE进行了抽象 架构,显然我的应用程序的运行时性能会受到影响

我需要知道的是,我需要考虑的一个因素是,对于一个运行ReHATHLINUX 3 +的应用程序的单个主机服务器,我需要最小的SPECUPREPROS+RAM等,并且只致力于运行这个应用程序。如果同时访问用户基数每月增加100,那么这将产生效率得分,比如说10分之8


不使用集群。

我严重怀疑使用Spring是否会显著影响性能


您认为Spring的哪些方面会导致性能问题?

我严重怀疑使用Spring是否会显著影响性能


您认为Spring的哪些方面会导致性能问题?

这里有太多的变量,唯一的答案是吸取它并以科学的方式进行观察

您需要构建一个服务器,而不是基准测试。从一些商品设置开始,比如说4核cpu和2G ram,然后运行一个基准脚本,看看它是否满足您的需要。最有可能的是

如果没有,您应该能够从基准测试中获得的Nulber计算所需的服务器大小,或者修复性能问题,使其在您拥有的硬件上运行

重要的是要确定是什么限制了你的表现。您的服务器是否使用了所有的核心,或者您的进程是否停留在单个核心上,您的JVM是否获得了足够的内存,您是IO绑定的还是数据库绑定的

一旦知道了限制因素,就很容易找到解决方案——要么提高程序的效率,要么购买更多合适的硬件


使用J2EE时需要注意两件事-大多数JVM都有过去十年中的默认堆大小,确保JVM有足够的堆,每个堆和堆栈至少1G所有的JIT编译、对象缓存、模块加载等都需要一段时间才能稳定下来——在开始基准测试之前,至少要对系统进行一个小时的测试。

这里有太多的变量,唯一的答案是吸取它们,然后以科学的方式进行查看

您需要构建一个服务器,而不是基准测试。从一些商品设置开始,比如说4核cpu和2G ram,然后运行一个基准脚本,看看它是否满足您的需要。最有可能的是

如果没有,您应该能够从基准测试中获得的Nulber计算所需的服务器大小,或者修复性能问题,使其在您拥有的硬件上运行

重要的是要确定是什么限制了你的表现。您的服务器是否使用了所有的核心,或者您的进程是否停留在单个核心上,您的JVM是否获得了足够的内存,您是IO绑定的还是数据库绑定的

一旦知道了限制因素,就很容易找到解决方案——要么提高程序的效率,要么购买更多合适的硬件


使用J2EE时需要注意两件事-大多数JVM都有过去十年中的默认堆大小,确保JVM有足够的堆,每个堆和堆栈至少1G所有的JIT编译、对象缓存、模块加载等都需要一段时间才能稳定下来——在开始基准测试之前,至少要对系统进行一个小时的测试。

作为工具包,我不认为Spring本身会影响初始化后的性能,但我认为Hibernate会。这种影响有多大,取决于很多细节,比如DB模式,关系布局与OO层有多大不同,当然还有DB访问是如何组织的,以及DB访问发生的频率等等。所以我怀疑,这是否有经验法则。通过使用替代应用服务器开发重要的原型,或者尝试使用自己的小型无ORM使用JDBC版本。作为工具包,我不认为Spring本身会影响初始化后的性能,但我认为Hibernate会。这种影响有多大,取决于很多细节,比如DB模式,关系布局与OO层有多大不同,当然还有DB访问是如何组织的,以及DB访问发生的频率等等。所以我怀疑,这是否有经验法则。只需使用替代应用服务器开发重要的原型,或者尝试自己的小型无ORM使用JDBC版本即可。

哪种性能下降?关于什么? 在使用该框架之前,您是否衡量了性能


如果Spring框架导致无法接受的性能问题,那么显而易见的解决方案是不使用它。

哪一个性能问题?关于什么? 在使用该框架之前,您是否衡量了性能

如果Spring框架导致无法接受的性能
问题显而易见的解决方案是不使用它。

我从未听说Spring会造成任何类型的运行时性能影响。由于它主要使用pojo,如果它有什么问题,我会感到惊讶。可能除了在启动时解析大量XML之外,这可以通过使用注释来解决


只需先编写应用程序,然后进行相应调整

我从未听说Spring会产生任何类型的运行时性能影响。由于它主要使用pojo,如果它有什么问题,我会感到惊讶。可能除了在启动时解析大量XML之外,这可以通过使用注释来解决


只需先编写应用程序,然后进行相应调整

无意冒犯,但我敢打赌性能问题更可能是由应用程序代码引起的,而不是由Spring引起的

如果你看看他们编写源代码的方式,你会发现他们非常注重质量

知道的唯一方法是分析你的应用程序,查看时间花在哪里,分析确定根本原因,纠正它,冲洗,重复。这是科学。其他的都是猜测


我在一个生产应用程序中使用了Spring,它已经顺利运行了三年,而且还在计算中。没有内存泄漏,没有连接丢失,没有服务器反弹,没有性能问题。它就像黄油一样运行。

无意冒犯,但我敢打赌,性能问题更可能是由于应用程序代码而不是Spring造成的

如果你看看他们编写源代码的方式,你会发现他们非常注重质量

知道的唯一方法是分析你的应用程序,查看时间花在哪里,分析确定根本原因,纠正它,冲洗,重复。这是科学。其他的都是猜测


我在一个生产应用程序中使用了Spring,它已经顺利运行了三年,而且还在计算中。没有内存泄漏,没有连接丢失,没有服务器反弹,没有性能问题。它就像黄油一样运行。

Spring通常用于在应用程序启动后不久创建长寿命对象。在进程的整个生命周期内几乎没有性能成本。

Spring通常用于在应用程序启动后不久创建长寿命对象。在进程的整个生命周期中,几乎没有性能成本。

我想Hibernate的开销我不知道其内部,但可能会有大量的反射、字符串生成和映射查找;或者,它可以包含一个代码生成器,而编译器在一个像样的CPU上可能会因为数据库请求往返而相形见绌;或者,它可以合并一个代码生成器,而编译器在一个像样的CPU上可能会因为数据库请求往返而相形见绌。