【问题标题】:Can IIS configuration be modified concurrentlyIIS配置可以同时修改吗
【发布时间】:2015-07-06 03:10:33
【问题描述】:

我们在每台服务器的 IIS 中都有多个网站,并且我们有 PowerShell 脚本可以创建/更新单个网站,以及配置绑定、SSL、应用程序池等。

鉴于服务器场的大小和网站的数量,非常希望能够同时升级多个网站。

但是,这会引发一个问题,即站点 A 的 applicationHost.config 更新可能会被站点 B 的并发更新覆盖。

这可能吗?

【问题讨论】:

    标签: powershell iis-7 concurrentmodification applicationhost


    【解决方案1】:

    始终最好对此进行测试:

    让我们从一个创建一些网站的简单脚本开始,在本例中为 20 个。

    Param
    (
        [Parameter(Mandatory=$true)]
        [int]
        $offset
    )
    
    Import-Module WebAdministration
    
    ForEach ($number in 1..20 ) {
    
        $id = $offset + $number
        New-WebSite -Name $("Test_" + $id) -Port $id -Id $id -PhysicalPath "$env:systemdrive\inetpub\wwwroot" 
    }
    

    我把这个保存到C:\temp\New-TestSite.ps1

    现在同时运行该脚本 3 次,我创建了另一个脚本:C:\temp\Run-Test.ps1,内容如下:

    start-job -ScriptBlock {& C:\temp\New-TestSite.ps1 -offset 10000}
    start-job -ScriptBlock {& C:\temp\New-TestSite.ps1 -offset 20000}
    start-job -ScriptBlock {& C:\temp\New-TestSite.ps1 -offset 30000}
    

    运行Run-Test.ps1后,让我们检查一下我们创建了多少个站点:

    ls iis:\sites | group {$_.Name.substring(0,6)} | Select Count,Name | Format-Table -AutoSize
    

    我明白了:

    Count Name
    ----- ----
       19 Test_1
       18 Test_2
       15 Test_3
    

    所以我们创造了 60 个中的 52 个

    每个脚本创建 50 个时,我得到:

    Count Name
    ----- ----
       31 Test_1
       31 Test_2
       30 Test_3
    

    这是 150 人中有 92 人

    在某些测试用例中更糟糕的是,其中一个 PowerShell 进程崩溃了:

    至少Get-Job 显示:

    Id     Name            PSJobTypeName   State    
    36     Job36           BackgroundJob   Failed   
    38     Job38           BackgroundJob   Completed
    40     Job40           BackgroundJob   Completed
    

    所以综上所述,我们可以说同时修改applicationHost.config是不保存的。

    当然,这是一个极端的测试用例,同时进行手动更改可能会奏效,但我们应该小心。

    测试在 Server 2012 R2 (IIS 8.5) 上运行

    【讨论】:

    • 科学!我认为这是非常有结论的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2015-07-03
    • 2010-10-14
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多