模块 版本
快速入门 1.6.8版本
基础模块 1.6.8版本
数据操作模块 1.6.8版本
客户端获取模块 1.6.8版本
上传服务端模块 1.6.8版本
时间模块 1.6.8版本
加密模块 1.6.8版本
数据流模块 1.6.8版本
远程请求模块 1.6.8版本
JSON模块 1.6.8版本
XML模块 1.6.8版本
FSO模块 1.6.8版本
自定义模块 1.6.8版本
MVC模块 1.6.8版本
二维码模块 1.6.8版本
邮件模块 1.6.8版本
Excel模块 1.7.0版本

高并发解决方案

服务端承载性能一直都是备受关注的,那么作为ZeroASP的开发者,将如何编写高性能承载的代码呢?下面我们将为你提供ZeroASP高性能承载处理的核心代码。你可以免费将该模块使用于任何个人项目。但是不能去除模块信息。官方QQ群:199951855


演示代码说明

  • ZeroASP高性能承载处理的核心代码,演示短时间内接收1000请求的处理能力;

实例演示

1.无容错处理;

			 
			<!--#include file="./ZeroASP/ZeroASP.asp"-->
			<%
			Dim Id,Text,CreatedAt,Line
			Id = Zasp.Times.Dates(Now(),6) & Zasp.Base.RndN(1000,9999) '201610191212120000
			Text = "高并发测试"
			CreatedAt = Zasp.Times.Dates(Now(),14) '2016-10-19 12:12:12
			'记录创建
			Line = Zasp.DB.ExeRows(Conn,"Insert Into [Test] (Id,Text,CreatedAt)Values(" & Id & ",'" & Text & "','" & CreatedAt & "')")
			Line = 0 '清空返回行数
			%>
			 

经过测试:1000个请求仅仅处理了600个请求左右,命中率为65%;

尝试通过增加随机数,由Zasp.Base.RndN(1000,9999)改为Zasp.Base.RndN(100000,999999),依然无法达到100%命中率,为什么会出现这个情况呢?因为当高并发请求的时候,由于受到I/O读写速度影响,难免会出现写入过慢,导致未处理完当前请求又接收下一个请求的情况,所以不难看出问题不在于随机数,而在于I/O读写速度。那么应该怎么纠正这个错误呢?怎么去处理这个无法预知的错误的存在呢?下面将是ZeroASP高性能承载处理的核心代码。

2.有容错处理;

			 
			<!--#include file="./ZeroASP/ZeroASP.asp"-->
			<%
			Dim Id,Text,CreatedAt,Line,I
			Id = Zasp.Times.Dates(Now(),6) & Zasp.Base.RndN(1000,9999) '201610191212120000
			Text = "高并发测试"
			CreatedAt = Zasp.Times.Dates(Now(),14) '2016-10-19 12:12:12
			'记录创建
			Line = Zasp.DB.ExeRows(Conn,"Insert Into [Test] (Id,Text,CreatedAt)Values(" & Id & ",'" & Text & "','" & CreatedAt & "')")
			If Line = 0 Or Line = "" Then '表示未成功处理,进行异常判断
				If Err.Number <> 0 Then '有异常
					Err.Clear '每次异常处理前清空已知错误
					For I = 1 To 5 '提供五次异常处理
						Id = Zasp.Times.Dates(Now(),6) & Zasp.Base.RndN(1000,9999) '201610191212120000
						Line = Zasp.DB.ExeRows(Conn,"Insert Into [Test] (Id,Text,CreatedAt)Values(" & Id & ",'" & Text & "','" & CreatedAt & "')")
						If Err.Number <> 0 Then '有异常
							Err.Clear '每次异常处理前清空已知错误
						Else
							Exit For
						End If
					Next
				End If
			End If
			If Line = "" Then:Line = 0 '表示异常处理失败,返回0
			Line = 0 '清空返回行数
			%>
			 

经过测试:1000个请求全部处理完成,命中率为100%;

那么为什么会完成全部的请求呢?原因是因为在创建记录的时候,由于高并发请求,会导致第一次创建记录出现无法创建的情况,那么这个时候已经出现异常错误了,如果不处理,理论上不会导致严重问题,但是对于一些稳定性高的系统中,这部分异常错误是需要我们去尝试修复的,所以我们通过捕抓错误来判断当前记录问题,然后重新尝试创建记录,用于修复错误。那么这里的五次尝试是固定的吗?并不是,这个可以根据你的项目实际情况进行调整,默认情况下我们推荐五次尝试即可。ZeroASP高性能承载处理的核心代码就此介绍完毕,更多性能问题欢迎加入官方QQ群:199951855,我们一同讨论。


了解更多 »