zoukankan      html  css  js  c++  java
  • 提高网站速度|负载均衡

    文章出处:伟网动力(http://www.weiw.com/)
    有何见解,可以来此论坛 http://www.weiw.com/bbs/
    转贴请标明出处,谢谢。

    环境说明:
    开发平台是DOTNET  B/S  .NET Framework 1.1
    正式WEB服务器和测试机,均为win2003
    原有一个主网站,在六台WEB服务器做负载均衡。运行比较稳定。
    现新开发一个子站,将布署在另三台WEB服务器上做负载均衡。这个负载均衡设置类似主网站的设置。

    解决步骤:
    1)子站在测试机测试通过,运行正常。准备布署到正式环境下(三台WEB服务器)

    2)将子站程序拷贝到那三台WEB服务器上,配置好子站相关配置,开放站点与负载均衡开始测试。

    3)测试时,页面显示正常,但在触发服务端事件时出现异常。
    错误信息“Viewstate is invalid for this page”(此页的视图状态无效)没有为解决此问题提供足够信息
    同样的程序为何在测试机运行没问题,放到正式环境下,就出现异常呢?
    在微软网站要查到这个异常的解释(http://support.microsoft.com/default.aspx?scid=kb;zh-cn;831150),说建议安装Microsoft .NET Framework 1.1 Service Pack 1。
    于是,怀疑没有装这个补丁,就查看注册表项:
    项名称:HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322
    SP值为0,表明没有装Framework 1.1 Service Pack,
    然后去微软网站下载了.NET Framework 1.1 Service Pack 1和.NET Framework 1.1 Service Pack 1 ASP.NET 安全更新 - Windows Server 2003

    4)装上这两个补丁后,运行子站程序,在触发服务端事件时仍旧出现异常。异常如下:
    异常详细信息: System.Web.HttpException: 无法验证数据。
    堆栈跟踪:
    [HttpException (0x80004005): 无法验证数据。]
    [HttpException (0x80004005): Authentication of viewstate failed.  1) If this is a cluster, edit <machineKey> configuration so all servers use the same validationKey and validation algorithm.  AutoGenerate cannot be used in a cluster.  2) Viewstate can only be posted back to the same page.  3) The viewstate for this page might be corrupted.]
    再回到831150那篇文章看:“应用此修复程序后,视图状态错误信息标题将变成“Unable to Validate Data”。尽管新的错误信息格式没有对问题进行具体描述,但它比以前的错误信息格式提供了更多信息。”
    得知应该是ViewState值已被截断?!
    问题就转化:什么原因导致"ViewState值已被截断"呢?
    因为程序在测试环境下运行没问题的,那么可能是系统级的问题。
    比较一下正式和测试环境:正式环境是三台Server做负载均衡,而测试环境只一台Server。

    5)将负载均衡设置修改了一下,只开放一台WEB Server。测试后,发现不出现那个异常。三台机分别测试,均无异常。
    推测:可能是负载均衡设置有问题。于是找来系统管理员,他说,子站的负载均衡设置跟主站一样的啊。但还是请他再确认一下两个负载均衡设置的不同之处。
    经再次的仔细检查,发现负载均衡Pool的Persistence Type(进程延续)为None,也就是说服务端不保持连接状态。这样,每次服务端事件被触发时,就会导致"ViewState值已被截断"。于是将Persistence Type(进程延续)的值改为Simple,Timeout设为600秒。

    总结:
    程序员不单要写好程序,也要适当的了解系统。这个问题,不一定会经常遇到,作为一个解决问题的思路,供大家分享。

    附:负载均衡一般设三个地方来保证进程延续。首先启动负载均衡,然后设置“Enable Connection Rebind”为true.最后Persistence Type一般设为Simple再加上超时时间。
    注:本人对负载均衡研究甚少,不知其他类似软件是否也如此设置,其原理应该都差不多。


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tonnycncn/archive/2005/04/11/342875.aspx

    作者:Tyler Ning
    出处:http://www.cnblogs.com/tylerdonet/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,请微信联系冬天里的一把火

  • 相关阅读:
    4.2Python数据处理篇之Matplotlib系列(二)---plt.scatter()散点图
    4.1Python数据处理篇之Matplotlib系列(一)---初识Matplotlib
    3.8Python数据处理篇之Numpy系列(八)---Numpy的梯度函数
    3.7Python数据处理篇之Numpy系列(七)---Numpy的统计函数
    3.6Python数据处理篇之Numpy系列(六)---Numpy随机函数
    3.5Python数据处理篇之Numpy系列(五)---numpy文件的存取
    3.4Python数据处理篇之Numpy系列(四)---ndarray 数组的运算
    3.3Python数据处理篇之Numpy系列(三)---数组的索引与切片
    3.2Python数据处理篇之Numpy系列(二)--- ndarray数组的创建与变换
    3.1Python数据处理篇之Numpy系列(一)---ndarray对象的属性与numpy的数据类型
  • 原文地址:https://www.cnblogs.com/tylerdonet/p/1653733.html
Copyright © 2011-2022 走看看