`
qiushily2030
  • 浏览: 3880 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Struts2慢的原因

阅读更多
Struts2的慢要追溯到它的前身Webwork了,目前已知的主要原因包括:复杂的拦截器链、OGNL表达式解析、Struts2的标签等。
spring + spring JdbcTemplate + spring mvc

struts2的核心是xwork,因为用到了ThreadLocal模式,所以那些Web容器中的对象会跟着当前Thread一跟到底,所以造成了struts2是很占用内存的,尤其是高并发的情况下,如果request的生命周期很长,你会看到内存不断上升。这个是struts2在性能上的一个问题,但是这个却能支撑起其他web框架无法支持的功能。
struts2因为是使用instance-per-request的因此会导致大量的短生命周期对象产生而需要对jvm参数调整。
struts2的default interceptor stack,按需裁剪吧,因为没调用一次,都会触发这个拦截器。
分享到:
评论
25 楼 deadcode 2010-06-28  
spring mvc 挺好,想咋写咋写
24 楼 rrsy23 2010-06-26  
裁剪完了最好--那直接spring MVC

那直接自己写个MVC
23 楼 aaa5131421 2010-06-26  
lovbreath 写道
aaa5131421 写道
my_corner 写道
pch272215690 写道
   运行速度慢换来的是开发效率的提升,软件的慢可以用硬件来弥补,而且多加一台服务器有时比多招开发人员要来得容易。

这话说的太不负责了,不是一个程序员应该说的

这个我有话说,一定要回一下,呵呵。
这不是不负责任,任何事情都有一个度,按照道理来说:任何代码就算你优化一万遍也还有优化的空间,只不过是成本越来越大,难度越来越高,而得到的收获却越来越少。犹如海绵中的水,只要你挤,总还是会有的。只不过越来越少,越来越费劲。如果说是内核级程序,重用率非常之高,优化一下会事半功倍,比升级硬件成本利润比会非常好,如果程序分布很广,优化效果不高,这样直接升级硬件是最好的方法。
可以说软件的发展历程就是以牺牲性能为代价  换来  实现复杂的功能。而硬件也是一直在发展的,而且比软件的性能需求增长的更快。


你说的MS前后有些矛盾,
任何代码就算你优化一万遍也还有优化的空间,只不过是成本越来越大,难度越来越高,而得到的收获却越来越少
紧接着
如果说是内核级程序,重用率非常之高,优化一下会事半功倍

我指的内核级程序,重用率非常之高,优化一下    指的是一万遍中的前一百遍,呵呵~~~这样说应该明白了吧
22 楼 kjj 2010-06-26  
caoyangx 写道
kjj 写道
人云亦云,鹦鹉学舌而已!!

我是来膜拜你的,圣人,你真的看破红尘了。


豪不负责任的说别人的话,怎么这个比喻不恰当吗,你和鹦鹉有啥区别,对一个东西下结论麻烦举出说服人 的例子来,不然没说服力
21 楼 lovbreath 2010-06-26  
aaa5131421 写道
my_corner 写道
pch272215690 写道
   运行速度慢换来的是开发效率的提升,软件的慢可以用硬件来弥补,而且多加一台服务器有时比多招开发人员要来得容易。

这话说的太不负责了,不是一个程序员应该说的

这个我有话说,一定要回一下,呵呵。
这不是不负责任,任何事情都有一个度,按照道理来说:任何代码就算你优化一万遍也还有优化的空间,只不过是成本越来越大,难度越来越高,而得到的收获却越来越少。犹如海绵中的水,只要你挤,总还是会有的。只不过越来越少,越来越费劲。如果说是内核级程序,重用率非常之高,优化一下会事半功倍,比升级硬件成本利润比会非常好,如果程序分布很广,优化效果不高,这样直接升级硬件是最好的方法。
可以说软件的发展历程就是以牺牲性能为代价  换来  实现复杂的功能。而硬件也是一直在发展的,而且比软件的性能需求增长的更快。


你说的MS前后有些矛盾,
任何代码就算你优化一万遍也还有优化的空间,只不过是成本越来越大,难度越来越高,而得到的收获却越来越少
紧接着
如果说是内核级程序,重用率非常之高,优化一下会事半功倍
20 楼 aaa5131421 2010-06-26  
my_corner 写道
pch272215690 写道
   运行速度慢换来的是开发效率的提升,软件的慢可以用硬件来弥补,而且多加一台服务器有时比多招开发人员要来得容易。

这话说的太不负责了,不是一个程序员应该说的

这个我有话说,一定要回一下,呵呵。
这不是不负责任,任何事情都有一个度,按照道理来说:任何代码就算你优化一万遍也还有优化的空间,只不过是成本越来越大,难度越来越高,而得到的收获却越来越少。犹如海绵中的水,只要你挤,总还是会有的。只不过越来越少,越来越费劲。如果说是内核级程序,重用率非常之高,优化一下会事半功倍,比升级硬件成本利润比会非常好,如果程序分布很广,优化效果不高,这样直接升级硬件是最好的方法。
可以说软件的发展历程就是以牺牲性能为代价  换来  实现复杂的功能。而硬件也是一直在发展的,而且比软件的性能需求增长的更快。
19 楼 風一樣的男子 2010-06-26  
Spring 3.0 MVC
18 楼 唯快不破 2010-06-26  
现在还没有人敢贴代码出来证明某个mvc框架比struts2快
17 楼 my_corner 2010-06-26  
weir2009 写道
sundoctor 写道
struts2慢吗,我不觉得,我觉得快与慢主要在编写程序的人,一个人第一次用hibernate写出来的东东特别慢,然后他就觉得使用hibernate就是慢,是个错误,然后他不惜血本换成了jdbc还是一样慢。

说得好,说到底还是硬件性能问题,这个问题不是程序员能左右的,我们只会优化他

只能说是程序不够优化,和硬件关系不大
16 楼 my_corner 2010-06-26  
pch272215690 写道
   运行速度慢换来的是开发效率的提升,软件的慢可以用硬件来弥补,而且多加一台服务器有时比多招开发人员要来得容易。

这话说的太不负责了,不是一个程序员应该说的
15 楼 sundoctor 2010-06-26  
随便说说,路过路过
14 楼 weir2009 2010-06-26  
sundoctor 写道
struts2慢吗,我不觉得,我觉得快与慢主要在编写程序的人,一个人第一次用hibernate写出来的东东特别慢,然后他就觉得使用hibernate就是慢,是个错误,然后他不惜血本换成了jdbc还是一样慢。

说得好,说到底还是硬件性能问题,这个问题不是程序员能左右的,我们只会优化他
13 楼 sundoctor 2010-06-26  
struts2慢吗,我不觉得,我觉得快与慢主要在编写程序的人,一个人第一次用hibernate写出来的东东特别慢,然后他就觉得使用hibernate就是慢,是个错误,然后他不惜血本换成了jdbc还是一样慢。
快与慢不在于你使用什么东东,不管是struts2还是spring mvc,而是在于你使用的方式,你对它们的了解程序,是否精通。如果你就从网上找个hello world能运行起来,你就说你会某某东东,那写出来的东东不慢才怪!!!!
12 楼 joeyhacker 2010-06-26  
kjj 写道
人云亦云,鹦鹉学舌而已!!

这是真话,敢问 什么是慢,什么是快 ?
11 楼 caoyangx 2010-06-26  
kjj 写道
人云亦云,鹦鹉学舌而已!!

我是来膜拜你的,圣人,你真的看破红尘了。
10 楼 7454103 2010-06-26  
strut2 存在说明他还是有价值的!
spring mvc  正在研究! 貌似 spring3 的MVC  很 happy!
9 楼 pch272215690 2010-06-26  
   运行速度慢换来的是开发效率的提升,软件的慢可以用硬件来弥补,而且多加一台服务器有时比多招开发人员要来得容易。
8 楼 weir2009 2010-06-26  
sw1982 写道
裁剪默认拦截器栈确实是个好办法。。基本用不上那么复杂的功能

那还用Struts2干嘛,慢与快是相对的,看怎么用了。
7 楼 sarin 2010-06-26  
还是Spring MVC Spring Spring JDBC好
6 楼 joehe 2010-06-26  
己把spring mvc 把req,res两个方法参数去掉了,用的就是ThreadLocal,现在方法一个参数也没有,修改MultiActionController这个类,还可以在当前请求的线程内调用的方法中随便拿到这两个参数,何乐而不为

相关推荐

    Struts2漏洞利用工具

    Struts2是一个基于MVC设计模式的Web应用框架,但2存在远程代码执行的漏洞,现在Struts2漏洞检测工具2017版增加S2-046,官方发布S2-046和S2-045漏洞引发原因一样,只是利用漏洞的位置发生了变化,S2-046方式可能绕过...

    Migrating From Struts1 To Struts2

    迁移到Struts2的主要原因包括: - **性能提升**:Struts2在执行效率方面进行了优化,能够更好地处理高并发请求。 - **功能增强**:Struts2引入了更多的内置特性,如拦截器、结果类型等,减少了自定义组件的需求。 - ...

    struts2重要知识点原理

    Struts2是一个流行的Java web开发框架,主要用于构建MVC(模型-视图-控制器)架构的应用程序。它的设计目标是简化开发过程,提供强大的验证和国际化功能,以及灵活的插件架构。Struts2的核心是基于拦截器的Action...

    Struts2初步使用总结

    从公司层面来看,选择使用Struts2通常基于以下几个原因: 1. **企业需求**:许多大型项目已经基于Struts2开发,为了与现有系统兼容或保持一致性,继续使用Struts2是一个自然的选择。 2. **开发效率**:Struts2提供...

    Struts2漏洞检查工具2017版

    增加S2-048 Struts 2.3.X 支持检查官方示例struts2-showcase应用的代码执行漏洞,参考地址:http://127.0.0.1:8080/struts2-showcase/integration/saveGangster.action 2017-03-21: 增加S2-046,官方发布S2-046和S2...

    struts2+fckeditor

    Struts2是一个非常流行的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。FCKeditor则是一款强大的在线文本编辑器,它允许用户在网页上进行富文本编辑,包括插入图片、链接等操作。在Struts2框架中...

    Struts2漏洞检查工具2017版.zip

    Struts2漏洞检查工具2017版 V2.0 by 安恒信息应急响应中心。支持S2-032,S2-037,S2-016,S2-019,S2-045,S2-046,S2-048漏洞验证。有对漏洞的命令执行功能、文件上传功能。还有批量验证功能。增加S2-046,官方发布S2-046...

    struts2-016/017漏洞解决

    Struts2是一个非常流行的Java Web开发框架,它提供了一种模型-视图-控制器(MVC)架构,便于开发者创建动态、数据驱动的Web应用程序。然而,任何软件都可能存在安全漏洞,Struts2也不例外。"struts2-016/017漏洞"指...

    struts2 跳转至404 页面的解决方案

    针对"Struts2 跳转至404 页面的解决方案"这个主题,我们将深入探讨可能的原因和解决方法。 首先,我们来看`struts.xml`文件,这是Struts2的核心配置文件,负责定义Action、结果类型、拦截器等关键组件。当Struts2...

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    Struts2防止重复提交解决方案

    Struts2 是一款流行的Java Web MVC框架,用于构建企业级应用程序。在Struts2中,防止重复提交是一个重要的问题,因为它可能导致数据不一致性和服务器资源的浪费。本文将详细介绍如何在Struts2中解决这个问题,以及...

    struts2配置文件加载顺序

    Struts2是一个流行的Java web开发框架,它提供了一种优雅的方式来组织和控制应用程序的行为。配置文件在Struts2中起着至关重要的作用,它们定义了请求如何被映射到特定的Action,以及如何处理结果。了解Struts2配置...

    Struts2漏洞检测(带自己编写使用说明一看就上手)

    2. **S2-016**(CVE-2013-2263):此漏洞允许攻击者通过恶意的OGNL表达式执行任意代码,原因是未正确过滤用户输入。 3. **S2-048**(CVE-2017-5638):这个漏洞是由于解析JSON时的反序列化问题,使得攻击者可以通过...

    struts2 实现文件批量上传

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。文件批量上传是Web应用中常见的需求,特别是在处理大量数据或者用户需要上传多张图片等场景下。本项目实现了使用Struts2进行文件批量...

    uploadify3与struts2结合实现有进度条文件上传实例

    这是根据uploadify3 2结合struts2搭建的文件上传环境 可以直接导入eclipse运行 每步实现基本都加了注释 以下是我碰到的问题: 1 判断session是否失效 本实例没测试这个问题 但在工作项目中碰到了 但原因在这里...

    Struts2漏洞利用工具2013版V1.2

    原因是Struts2框架在处理用户输入时,没有进行充分的数据验证和过滤,导致攻击者可以构造特定的HTTP请求,使得服务器端执行任意代码。 S2-017,也称为“CVE-2013-2231”,同样是一个远程代码执行漏洞,影响了Struts...

    struts2开发遇到的问题

    这个严重错误通常涉及到Struts2配置问题,可能的原因包括: - `struts.xml`中的包路径错误。 - 工程中导入了不兼容的`commons-fileupload`包。确保使用与Struts2版本兼容的库。 以上就是Struts2开发过程中常见的...

Global site tag (gtag.js) - Google Analytics