【问题标题】:I have two machine.config files on my server, which one do I edit and how do I verify they are being used?我的服务器上有两个 machine.config 文件,我要编辑哪个文件以及如何验证它们正在被使用?
【发布时间】:2011-03-16 11:33:04
【问题描述】:

我需要进行一些性能调优,需要修改以下设置:processModelhttpRuntimeconnectionManagement。我想很简单,但我不确定要编辑两个 machine.config 文件中的哪一个,或者我要同时编辑这两个文件吗?

  • \Windows\microsoft.net\ 框架 \v2.0.50727\CONFIG\machine.config
  • \Windows\microsoft.net\ Framework64 \v2.0.50727\CONFIG\machine.config

作为后续问题,我如何验证设置是否已应用?

我应该提到,服务器运行的是 Windows Server 2003 Enterprise(64 位)和 IIS 6.0(64 位)和 MSSQL Server Enterprise 2005(64 位)。

提前感谢您的帮助!

【问题讨论】:

    标签: .net asp.net windows-server-2003 machine.config


    【解决方案1】:

    如果您的 .net 应用程序/IIS 在 64 位模式下运行,则使用位于 Framework64 中的那个。如果在 32 位模式下运行,则使用另一个。

    在启动 Windows 任务管理器时,如果进程名称后附加“*32”,则它以 32 位运行。如果不是,它在 64 位下运行。

    如果你的操作系统是 64 位,我假设你的机器上有两个文件夹。

    如果您使用的是 IIS6/7,则该进程名为 w3wp.exe。

    IIS7 对此也有更多设置,可以阅读at this blog post

    【讨论】:

    • 现在查看任务管理器,我看到“w3wp.exe”。那么这是否意味着我运行的是 IIS 7.0 而不是我想象的 6.0?我还看到“sqlservr.exe”。两个进程都没有“*32”后缀。但是,我确实看到其他具有“*32”后缀的过程(即“sqlbrowser.exe *32”、“SqlWb.exe *32”)。知道这意味着什么吗?
    • 顺便说一下,我是用这篇文章来确定Windows Server 2003默认安装的是哪个版本的IIS:support.microsoft.com/kb/224609
    • IIS6 和 7 都被命名为 w3wp。我在我的答案中编辑了这个。如果 w3wp 缺少 *32,它们运行在 64 位,你应该在 Framework64 中编辑 machine.config。
    • 谢谢米凯尔!最终,你回答了我的第一个问题。你会碰巧能够回答第二个吗?还是我相信正在使用这些设置?
    • 您应该信任它们,但应该通过尝试打开超过指定数量的主机连接来轻松测试 connectionManagement。
    【解决方案2】:

    我个人不会编辑,而是在站点或应用程序级别修改 web.config 文件。

    你应该可以通过这种方式修改httpRuntimeconnectionManagement设置,但不能修改processModel,它只能在machine.config中使用。

    但是,如果您使用的是 Windows Server 2003,则 may not need to modify processModel

    正如其他人所指出的,如果您确实要修改 machine.config,IIS6 将默认以 64 位模式运行,因此这是要编辑的版本。如果您需要在 32 位模式下运行(例如,因为您需要使用 32 位原生 DLL),您可以配置 32 位模式如下:

    cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 "true"
    

    请参阅this TechNet article 了解更多信息。

    【讨论】:

    • 感谢乔的提示。我将使用 web.config 进行上述所有设置。
    • 除非您希望设置在服务器范围内应用(适用于所有站点)。那么 Machine.config 就是合适的位置。
    • “除非您希望设置适用于服务器范围(适用于所有站点)。然后 Machine.config 是合适的位置。” - 我仍然认为将其放在 web.config 中每个网站都更好。然后这些站点是独立的,您可以将它们移动到不同的服务器上,而不必想知道它们为什么突然停止工作。
    • @joe 我意识到这是一个非常古老的评论,但是如果应用程序跨服务器移动时突然中断正是我想要发生的事情。
    • @asawyer “如果应用程序在服务器之间移动时中断正是我想要发生的事情” - 不知道你为什么想要这样做,但它很容易实现:例如只需有一个带有服务器名称的 appSetting;当您启动时将其与 Environment.MachineName 进行比较,如果它们不匹配,则开始敲响警钟。
    猜你喜欢
    • 2012-03-03
    • 2011-03-18
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 2020-11-06
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多