Wu.Country@侠缘

勤学似春起之苗,不见其增,日有所长; 辍学如磨刀之石,不见其损,日所有亏!

Webb.WAVE.Controls.Upload2已经完成,正在测试中。

Webb.WAVE.Controls.Upload2已经完成,正在测试中。
Upload2.JPG

主要改进:
1、上传文件数据处理的算法改进。在LAN上,最大速度可以达10MB/S,比起上个版本的最大速度3.5MB有很大的提高。
2、内存的最小占用。在极坏的情况下,内存占用可能多一些(主要是在算法的处理上,当上传文件的所有数据的每个字节都为13时,内存可能会出现大量碎片)。 极好情况下,只占用缓存设定的内存。
3、添加客户端脚本,上传进度条完全在客户端处理。其中上传速度,剩余时间等,都是用JS完成的,因此大大减少了服务器负担。
4、空文件不再处理,即用用户上传文件中,有空文件或者不存在的文件时,将被忽略,不再处理它。
5、可自行配置一些相关参数,如上传最大字节数,缓存字节数,临时目录等。

当然,还有很多改进的地方,我自己也不记得了。估计这个版本会在下个星期发布测试版。

Wednesday, June 07, 2006

做了一个大的改动,使上传速度又有了一次飞越。这是上传稳定后的速度,最快的瞬时速度有15MB/S.
Upload3.JPG

改动说明:主要是上传的GUID处理上,原来是通过在页面里注册一个隐藏的表单变量,然后在上传的Module中处理这个GUID。
原代码:

        /// <summary>
        
/// Get value from preloaded entity body. Identified by name. You can get any value in the form. 
        
/// But you can not get the file data by this function.
        
/// But this function too waste time.
        
/// </summary>
        
/// <param name="preloadedEntityBody"></param>
        
/// <param name="name"></param>
        
/// <returns></returns>

        private string AnalysePreLoadedContent(string i_perLoadedData, string m_fiedName)
        
{
        
//    string preloadedContent = HttpContext.Current.Request.ContentEncoding.GetString(m_preLoadedData);
            if (i_perLoadedData.Length > 0)
            
{
                
string    m_temp    = "name=\""+m_fiedName+"\"\r\n\r\n";
                
if(i_perLoadedData.IndexOf(m_temp)<=0return string.Empty;
                
int startIndex    = i_perLoadedData.IndexOf(m_temp)+m_temp.Length;
                
int endIndex    = i_perLoadedData.IndexOf("\r\n--",startIndex);
                
return i_perLoadedData.Substring(startIndex,endIndex-startIndex);
            }

            
else
            
{
                
return string.Empty;
            }

        }

字符串的查找工作相对而言是比较慢的,为了解决这一问题,进度条的GUID没有存在页面的隐藏表单变量里,而是用在了临时的Cookie里,也就是浏览器Cookie。原来想在Session里使用,但HTTPModule里无法取得Session实例,虽然实现了IReadonlySession以及IRequrieSessonStatus也无法使用Session,所以就放弃了。

上传进度条消失的问题,在上个版本中我们进行测试的时候遇到过。但我没能查到是什么原因。
这个版本里有没有就还得测试了。


Thursday, June 08, 2006

压力测试结果。然而更大的文件上传,在压力测试下失败!而且失败原因不明。
测试环境:
服务器:Win2003+IIS6.0  CPU:P4 3G RAM:512MB
客户端:WinXP+SP2 IE6.0
网络:LAN
测试工具:LoadRunner 7.5

Load test result: for Webb.Upload only

Thursday, June 08, 2006

 

Scenario 1: 10-user array with 3.26 MB and no progress bar.

 Transaction Summary 



Transaction Name

Minimum

Average

Maximum

Std

90 Percent

Pass

Fail

Stop

Action1_Transaction

7.438

8.561

9.453

0.736

9.417

10

0

0

vuser_end_Transaction

0

0

0

0

0

10

0

0

vuser_init_Transaction

0

0

0

0

0

10

0

0

 HTTP Responses Summary 



HTTP Responses

Total

Per second

HTTP_200

90

7.5

HTTP_304

120

10

 

Scenario 2: 100-user array 3.26 MB and no progress bar.

 Transaction Summary 



Transaction Name

Minimum

Average

Maximum

Std

90 Percent

Pass

Fail

Stop

Action1_Transaction

7.234

32.879

66.375

19.201

63.489

100

0

0

vuser_end_Transaction

0

0

0

0

0

100

0

0

vuser_init_Transaction

0

0.001

0.016

0.003

0

100

0

0

 HTTP Responses Summary 




HTTP Responses

Total

Per second

HTTP_200

900

12.857

HTTP_304

1,200

17.143

 虽然测试结果比上次的要好得多,100人同时上传3.26MB的文件可以在1分钟内完成,平均算下来,也有5MB/S,而10个用户同时上传,平均速度反而还少一些。当然,可能与服务器的一些配置相关。例如:应用程序没有分成独立的应用程序池,服务器同时运行着SQLServer等。


不管怎样,结果可以参考一下。 


posted on 2006-06-06 15:02 Wu.Country@侠缘 阅读(1398) 评论(15)  编辑 收藏 所属分类: 90.Blue journal

评论

#1楼  2006-06-07 11:55 砖头      

期待中!
以前版本经常是进度条突然消失,但文件还没上传完,这个问题不知道解决没有?   回复  引用  查看    

#2楼  2006-06-12 12:26 wxdxy [未注册用户]

期待,非常期待,正在使用SlickUpload   回复  引用    

#3楼  2006-06-14 10:13 wxdxy [未注册用户]

老大,什么时候出来啊,急用   回复  引用    

#4楼 [楼主] 2006-06-14 10:54 Wu.Country@侠缘      

急用!!!?????????
我现在极度郁闷中。。。。。
上传500MB的文件或者更在的文件,在网络速度不是很好(100KB/s)的时候,出现不明错误,无法运行。IE死掉了。。。。。。。
计算上传时间,大概是80分钟以后!!!!
昏。。。。。。。现在我的不知道怎么办了。。。。。。   回复  引用  查看    

#5楼  2006-06-14 12:47 wxdxy [未注册用户]

那歇会吧,这个也需要灵感,我现在卡在进度条上面,我就只需要上传时显示进度条,上传完后把文件名和路径存入数据库,想不到方法.   回复  引用    

#6楼 [楼主] 2006-06-14 13:40 Wu.Country@侠缘      

你可以先试试1.0版本的:
http://wucountry.cnblogs.com/archive/2006/06/14/306725.html   回复  引用  查看    

#7楼  2006-07-23 12:40 上游 [未注册用户]

请请用这个原代码怎么加进去上传时判断文件大小如果太大弹出警告提示框并停止上传,请问这样如何修改   回复  引用    

#8楼  2006-08-09 14:12 careprad [未注册用户]

我做的已前项目用的aspnetupload
测试中心说用户达到50就报错了,我自己想测试一下
但是不知道loadrunner中怎样设置文件参数,能指点一下吗?
  回复  引用    

#9楼 [楼主] 2006-08-09 16:09 Wu.Country@侠缘      

LoadRunner的测试是公司的测试人员做的,我只取得一些数据。
上面的测试已经过了很长时间了,而且新版本的测试还没有进行(其它的项目在测试)。因此上面的测试结果可能与我发布的版本不一致了。
具体的做法可以参考帮助,我对这个测试软件也不是很熟悉。听说是很简单的,有空我跟那个测试人员问一下。   回复  引用  查看    

#10楼  2006-08-10 15:28 careprad [未注册用户]

谢谢了   回复  引用    

#11楼  2007-03-30 13:16 高海东      

为什么在模态窗口中不能上传那   回复  引用  查看    

#12楼  2007-07-18 11:20 zhang [未注册用户]

为什么我在项目中用了Webb.WAVE.Controls.Upload,而VS2005自带控件FileUpLoad 的FileUpload1.PostedFile.SaveAs()就不能用啦,有什么方法解决吗?谢谢   回复  引用    

#13楼  2007-07-30 17:50 RedDragon [未注册用户]

如何 用 Webb.WAVE.Controls.Upload2 把 文件保存到数据库中?
还有就是,我用了 Webb.WAVE.Controls.Upload2 ,为什么以前的上传方式就不行了!   回复  引用    

#14楼  2008-07-24 00:20 huisheng [未注册用户]

--引用--------------------------------------------------
zhang: 为什么我在项目中用了Webb.WAVE.Controls.Upload,而VS2005自带控件FileUpLoad 的FileUpload1.PostedFile.SaveAs()就不能用啦,有什么方法解决吗?谢谢
--------------------------------------------------------
  回复  引用    

#15楼  2008-08-26 21:16 肖萝卜 [未注册用户]

--引用--------------------------------------------------
zhang: 为什么我在项目中用了Webb.WAVE.Controls.Upload,而VS2005自带控件FileUpLoad 的FileUpload1.PostedFile.SaveAs()就不能用啦,有什么方法解决吗?谢谢
--------------------------------------------------------
  回复  引用    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-06-08 13:25 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: