SmartUpload缺陷:不能上传大文件,占内存耗CPU

阅读更多

最近我们的网站项目,有一段时间,服务器运行到一定的时候时,就会出现cpu占用率非常大,而且内存消耗也非常大.(当然服务器的配置还是比较高的).
    经过很多代码的优化和重构,还是没有解决这个问题.或许没有找到根本原因.
    其中
         1.我们有把单例类重新有换成普通的类.直接new 出一个实例.而不是调用一个静态方法去获得实例.(在网上搜索资料发现,单例模式用的不好的话,确实会有内存泄露的

情况.仔细分析了一下代码,如果很多用户同时并发访问的时候,确实会出现这种内存泄露和数据错误的情况).
          2.有把某些对象(包括String类型引用)在finally置为null的.尽管如此,还是发现内存有缓慢泄露的情况,cpu任然占用很高.
          3.后来我们用Jprofeil工具测试代码(该工具,可以测试具体调用某个方法时候,内存的使用情况和cpu的占用率).结果发现我们网站上传功能出现很大的问题.
          我们使用的上传组件:smartUpload.如果传大一点点的文件(我们网站限制为2M),或者网速不行并且用户多次点击上传按钮的时候,smartUpload组件上传会使得cpu占用率很 高而且消耗内存.

 

 

最终在网上搜索了commons-fileupload和smartUpload区别.及其相应的优点缺点.后来我们改用了commons-fileupload组件.
      并且把上传按钮,再点击之后就让它disabled,以免用户多次点击上传按钮..

服务器运行了一段时间,太神奇了.内存消耗率超级少.

 

真是太高兴啦....

你可能感兴趣的:(配置管理,活动,框架,项目管理,Apache)