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等。


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


原文地址:https://www.cnblogs.com/WuCountry/p/418719.html