首页 > 开发 > CSS > 正文

ASP.NET性能优化之负载均衡的方法

2024-07-11 08:25:59
字体:
来源:转载
供稿:网友
HTTP重定向
所谓HTTP重定向,就是通过修改HTTP响应头中的Location标识为新的URL,然后返回给客户端,让客户端重新根据这个Location标识的URL去做新的请求。
这是一种最简单、也是最轻量级的负载均衡实现方案,使用asp.net,我们可以这样来实现,比如在主站www.yourdomain.com中,我们在默认主页如下编码:
static string[] servers = 
        {
            "http://192.168.0.77/luminji2/aspx/test3.aspx",
            "http://192.168.0.77/luminji2/aspx/test4.aspx"
        };
protected void Page_Load(object sender, EventArgs e)
{
    Response.Redirect(servers[DateTime.Now.Millisecond % 2]);
}
在上面的代码中,Response.Redirect实际为http头返回状态码302,这是为了告诉浏览器,请到Location中去拿URL,并且去到这个新的URL去做请求。当然,我们也可以采用最原始的方法来代替Redirect方法:
Response.Status = "302 Found";
Response.StatusCode = 302;
Response.AddHeader("Location", servers[DateTime.Now.Millisecond % 2]);
使用HttpWatch监视,我们对www.yourdomain.com请求,得到:
 image

可以清晰的看到第一次请求返回的302,然后转发到新的地址,得到状态码200。
以上方法是在客户端的重定向,即浏览器请求了两次,一次是到主服务器,第二次是到Location中指定的服务器上去请求。
HTTP重定向的方式非常依赖于主站的处理能力,它的性能瓶颈也是来自于IIS对于接受请求->asp.net处理首页动态程序->返回带有特定头请求,是的,它不能突破自身的性能瓶颈,比如,在我的破测试机上,我得到的吞吐率为:
 image

好在IIS自身已经支持重定向(查阅http://technet.microsoft.com/zh-cn/library/cc732969(WS.10).aspx),这更进一步省略了我们自己写代码实现重定向,省略运行ASP.NET代码带来的性能损耗。
2:varnish实现的反向代理负载均衡
另外一种思路是使用反向代理服务器的负载均衡功能,上篇当中介绍的varnish就支持这样的功能,查看配置文件:
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表