最新项目我使用Spring启动,并准备部署到生产环境,我想知道哪种方式运行应用程序有更好的性能或具有相同的性能?
另外,在发布到生产环境时如果要删除devtools依赖.
这是一个广泛的问题.答案是它取决于您的要求.
就个人而言,我更喜欢今天使用Spring Boot的独立应用程序.一个应用程序,一个JVM.它为您提供了有关部署和运行时行为的更多灵活性和可靠性.Spring Boot 1.3.0.RELEASE附带init scripts允许您在Linux服务器上将Spring Boot应用程序作为守护程序运行.例如,您可以集成rpm-maven-plugin到构建管道中,以便将应用程序打包并发布为RPM以进行部署,或者您可以轻松地对应用程序进行docker化.
通过将经典部署到像Tomcat这样的servlet容器中,在重新部署之后,您将面临各种内存泄漏,例如使用日志框架,严重管理的线程本地对象,JDBC驱动程序等等.要么花时间修复应用程序和框架中的所有内存泄漏,要么在部署后重新启动servlet容器.将您的应用程序作为独立版本运行,您不必关心那些内存泄漏,因为您被迫重新启动以便为您带来新版本.
过去,几个webapps在一个servlet容器中运行.这可能会导致所有Web应用程序的性能下降,因为每个webapp都有自己的内存,CPU和GC特性,这些特性可能会相互干扰.此外,线程池之类的资源在所有Web应用程序之间共享.
实际上,由于服务器上的高负载,独立应用程序无法避免性能下降,但在内存利用率或GC方面不会干扰其他应用程序.请记住,如果您可以专注于一个应用程序的特性,那么性能或GC调整会更加简单.一旦你需要在一个servlet容器中找到几个webapp的公分母,它就变得复杂了.
最后,您的决定可能取决于您的工作环境.如果您正在运营和维护软件的公司中构建应用程序,则您更有可能被迫制造战争.如果您可以自由选择部署目标,那么我建议使用独立应用程序.
为了从生产构建中删除devtools
您可以使用set excludeDevtools build属性来完全删除JAR.该属性由Maven和Gradle插件支持.
请参阅Spring Boot 文档.
| 归档时间: |
|
| 查看次数: |
2945 次 |
| 最近记录: |