Устанавливаем Exchange 2013. Часть 3 – допиливаем ОС

После установки Exchange 2013, необходимо произвести еще несколько рекомендованных настроек, чтобы в процессе эксплуатации не возникало каких-либо стандартных проблем. Не все эти настройки будут относиться к ОС, но все они рекомендуются для выполнения (так сказать best practice).

Update 26.01.2015: Добавлена рекомендация по размеру файла подкачки

Все статьи серии:

Поскольку Exchange 2016 мало чем отличается от Exchange 2013, то данное руководство можно применять как для Exchange 2013, так и для Exchange 2016 – такие статьи будут иметь в названии “Exchange 2013/2016”. Если же отличия будут существенные, то их я буду оформлять в отдельные части.

Устанавливаем Exchange 2013. Часть 1 – подготовка Active Directory
Устанавливаем Exchange 2013. Часть 2 – установка Exchange

Устанавливаем Exchange 2013. Часть 3 – допиливаем ОС
Устанавливаем Exchange 2013/2016. Часть 4 – устанавливаем сертификат
Устанавливаем Exchange 2013. Часть 5 – настраиваем CAS
Устанавливаем Exchange 2013. Часть 6 – создаем DAG
Устанавливаем Exchange 2013. Часть 7 – настраиваем AutoReseed


Итак, что необходимо сделать в первую очередь сразу после установки.


Замечание: сразу после установки .Net Framework 4.5.2 будет наблюдаться повышенная загрузка CPU (близкая к 100%). Вызвано это процессом оптимизации .Net (в основном CPU забирать будет служба .NET Runtime Optimization Service). После окончании этого процесса (15-20 минут), загрузка CPU вернется в норму (Beware Installing .NET 4.5.2 Update on Exchange Servers)


  1. Производим указанные действия из статьи KB2995145

    Для Windows Server 2012 R2 необходимо установить .NET Framework 4.5.2 или выполнить одно из следующего:

    a) создать переменную окружения COMPLUS_DisableRetStructPinning (environment variable) и задать ей значение 1
    b) создать в реестре по пути HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework запись DisableRetStructPinning типа DWORD и задать ей значение 1

    Я рекомендую выбрать первый вариант, т.е. установить .Net Framework 4.5.2


  2. Установить для сервере следующий план питания “High Performance”image
  3. Убедиться, что для сетевой карты отключен режим sleepimage
  4. Создать задание в Task Scheduler для очистки логов IIS (к сожалению, сам IIS не умеет чистить логи, а пишется их много)

    Пример такого скрипта:
    Function Get-IISLogLocation { 
    <#   
    .SYNOPSIS   
        This function can be ran against a server or multiple servers to locate 
        the log file location for each web site configured in IIS. 
    .DESCRIPTION 
        This function can be ran against a server or multiple servers to locate 
        the log file location for each web site configured in IIS.     
    .PARAMETER computer 
        Name of computer to query log file location. 
    .NOTES   
        Name: Get-IISLogLocation
        Author: Boe Prox 
        DateCreated: 11Aug2010  
               
    .LINK   
     
    http://boeprox.wordpress.com
     
    .EXAMPLE   
    Get-IISLogLocation -computer 'server1'
      
    Description 
    ----------- 
    This command will list the IIS log location for each website configured on 'Server1'
                
    #>  
    [cmdletbinding( 
        SupportsShouldProcess = $True, 
        DefaultParameterSetName = 'computer', 
        ConfirmImpact = 'low'
    )] 
    param( 
        [Parameter( 
            Mandatory = $False, 
            ParameterSetName = 'computer', 
            ValueFromPipeline = $True)] 
            [string[]]$Computer = $env:COMPUTERNAME
    ) 
    Begin { 
        $report = @() 
        } 
    Process { 
        ForEach ($c in $Computer) { 
                Write-Verbose "Checking connection on $($c)"
      
                If (Test-Connection -comp $c -count 1) { 
                     
                    Write-Verbose "Making IIS connection to $($c)"
                    $sites = [adsi]"IIS://$c/W3SVC"
                    $children = $sites.children 
                    ForEach ($child in $children) { 
                        Write-Verbose "Checking $child.servercomment"
                        If ($child.KeyType -eq "IIsWebServer") { 
                            Write-Verbose "Found site"
                            $temp = "" | Select Server, WebSite, LogLocation 
                            $temp.Server = $c
                            $temp.WebSite = $child.ServerComment 
                            $temp.LogLocation = $child.LogFileDirectory                            
                            $report += $temp 
                            }                                                             
                        } 
                }                 
            }  
        } 
    End { 
        $report
        } 
    }
    
    $LogsLocations = Get-IISLogLocation | Select-Object -ExpandProperty LogLocation
    $Date = (Get-Date) - (New-TimeSpan -Days 3)
    
    foreach ($Path in $LogsLocations)
    {
        Get-ChildItem -Recurse -Force -Path $Path | 
            Where-Object -FilterScript {-not $_.psiscontainer -and $_.LastWriteTime -lt $Date} | Remove-Item -Force
    }


  5. Отключить на сервере Hyper Threading (его включение плохо влияет на производительность Exchange в целом)

  6. Файл подкачки. Как описывается в статье Ask The Perf Guy: Sizing Guidance Updates For Exchange 2013 SP1, для сервера с установленным Exchange 2013 рекомендован следующий размер файоа подкачки (ранее эта рекомендация была несолько иной):

    меньшее значение из: (объем RAM + 10MB) или (32778MB)




Читайте также:

1 комментарий

  1. Сергей:

    Максим. можно я кое что попрошу уточнить. не раз уже слышал, что народ сначала поставит, потом увидит рекомендации по Hyper Threading и отключает на уже работающем сервере Exchange. Но часто это привозит к неадекватной работе после. Думается, что сервер Exchage не любит когда ему меняют конфигурацию железную. Мне кажется стоит предупредить.

Добавить комментарий