使用Struts+Hibernate+Spring框架搭建系统,该系统的主要功能就是上载附件保存到数据库中,经过反复测试,发现瓶颈在Struts这边。上载100M的数据,从页面点击“Upload”按钮,到进入Action,大概需要18分钟,但是从Action开始处理数据,到最后保存到数据库中大概只用了3分钟。分析原因,是页面中<form method="POST" enctype="multipart/form-data"  ....> ,点击“Upload”后,Struts首先做的事情是将页面上的元素与Form对应起来,使用映射将Form中的变量赋予实际的值。在这个过程中,我推测Struts将大附件整体遍历一遍,从应用服务器到客户端建立一个流,解析附件的相关信息,这个过程花费了大把时间,所以从页面点击“Upload”后,到进入Action开始处理数据之前要花费18分钟的时间。我分析的可能不对,请帮忙分析一下,有没有提高效率的方法?
分数不够,可以再加,呵呵,务必好人好到底,把问题给解决掉!

解决方案 »

  1.   

    我想应该是文件从client通过http上传到服务器花的时间太多吧?
    你可以尝试把文件弄小一点
    struts也不会慢的
      

  2.   

    提高效率大概要研究上传组件了
    把struts的上传组件优化再优化比如做的象讯雷下载那么快
      

  3.   

    我和楼上的想法有点不同,文件通过http传到服务器应该是在action里面进行处理的,所有我倾向楼主的观点,假如现象是正确的话,那么就是在View端和File文本框匹配生成像应的附件发费的时间比较多把
      

  4.   

    多线程上传要不要试试,
    http://www.mob8.cn/baby/javaupload.rar
    这是我在http://community.csdn.net/Expert/topic/5401/5401563.xml?temp=.3675501这个贴上帮人家解决的一个问题,只需要传一个文件路径和文件名过来就可以多线程上传了,不需要enctype="multipart/form-data"的,我想你的问题可能就出在这个enctype="multipart/form-data"上
      

  5.   

    谢谢分析!不过以上方式暂时都不能采取,还是定位使用Struts的机制处理,介于系统已经开发完毕。
    唉,还是很晕,搞不定啊,着急Ing!
      

  6.   

    定位问题了,在Unix下发布就慢,在Windows下发布就快!另外,IE7明细快与IE6。