【问题标题】:How do I create webgarden in webfarm如何在 webfarm 中创建 webgarden
【发布时间】:2012-02-13 23:43:50
【问题描述】:

我正在使用带有 C# 的 asp.net 4.0,我的应用程序托管在由 2 个带有负载均衡器的服务器组成的网络场上,现在我想在每台服务器上创建网络花园,以便为应用程序分配多个进程(以提高应用程序性能)。是否可以在 webfarm 内创建网络花园。如果是,那么我需要做哪些更改,所有 asp.net 控件和状态 mgmtlike 会话应用程序,缓存工作正常,或者我需要为此做一些设置请建议。

谢谢

【问题讨论】:

    标签: asp.net c#-4.0


    【解决方案1】:

    从您拥有网络农场的那一刻起,网络花园就必须毫无问题地工作。

    网络农场是指您添加 2 台或更多计算机来运行实际上相同的内容。

    Web garder 是指您在一台计算机上为同一应用程序添加 2 个或多个工作进程。

    您需要注意的是数据的同步。两台计算机和每个工作流程上的数据必须相同。从您准备好网络农场的那一刻起,我假设您在两台计算机共用的数据库上使用会话,因此将在网络花园中使用相同的会话。

    另外我想如果你使用数据库,这是两台电脑共享的,你写数据的时候要注意同步。

    在使用锁的线程内、在网络花园内使用互斥锁以及在网络农场+网络花园内使用计算机之间或数据库的某些部分的通用互斥锁文件名完成同步。

    如果你不写任何数据,那么你不需要除了公共会话数据库之外的其他同步。在这里你必须注意的所有额外的想法都是公共数据。

    InProc 上的会话

    如果您使用 Inproc 会话,则会话将保存在每台计算机的内存中。

    现在,如果负载平衡器小心地将来自同一用户的所有调用发送到同一台计算机,它将起作用。

    如果不进行负载平衡以将来自同一用户的所有呼叫发送到同一台计算机,那么据您了解,同一用户可能有两个不同的会话数据,每台计算机上一个,并且因为会话保持在同一个 cookie 上名字你可能对会话搞砸了。

    【讨论】:

    • 感谢您的回复。你是对的,我们使用 sql 进行会话,但我有一个问题,对于 web 表单,如果我使用会话 inproc,它会起作用吗?
    • @Areeb 我重播了答案。我使用网络花园,很难想到池之间的同步。问题是很难调试和定位问题,你需要设计和思考你需要它们的地方。我们所有的问题都出现在网络上的多用户中,我们在开发计算机上看不到这个问题,至少我们现在有。
    【解决方案2】:

    如果您使用的是 IIS 6,那么此 article 将帮助您配置 Web Garden。

    在 IIS 6.0 工作进程隔离模式下,应用程序池增强 通过隔离应用程序和 为这些应用程序服务的工作进程。为了更大 可靠性,您可以配置应用程序池以支持 多个工作进程。使用多个应用程序池 工作进程被称为网络花园。 Web 中的工作进程 花园共享到达该特定应用程序的请求 水池。如果一个工作进程失败,另一个工作进程可以继续 处理请求。

    如果您使用的是 IIS 7,此article 将帮助您配置 Web Garden。

    【讨论】:

    • 不错的文章,它有很大帮助,但我想知道如果我创建 webgarden,我已经有这个应用程序的网络农场,那么它们对应用程序有任何缺点或限制
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多