운영중인 IIS 서버에서 장애가 났다....ㅠㅠㅠㅠㅠㅠㅠㅠ OMG

처리를 담당하는 IIS 서비스가 정상적으로 실행되지 않고
백신 서비스만 90-100%의 메모리 점유가 되는 바람에 IIS가 메모리 점유가 안되고 정상 동작이 안되었다..

그덕에 IIS 서버에 어마어마한 양의 큐가 ..........


백신의 평균 메모리 점유율은 150MB 정도...
무슨 백신인지는 비밀로........

[ 정상인 상태의 IIS ]




일단 장애는 장애이고 당시 백신을 정지 후에 해결이 되었으니 후조치 대응을 해야한다
재발생이 되더라도 즉각으로 대응할 수 있도록
 
조치방법으로는
     1. 백신에서 IIS 실행파일자체를 예외처리
          ( 기본적으로 백신에서는 IIS 는 예외처리되어있지만.. IIS 프로세스명과 해당폴더를 예외처리적용했다 )
     2. 스크립트를 이용해 memory monitoring




powershell을 이용하여 memory moniring 스크립트를 작성하였다.

process를 가져와서 mb 단위로 변경하여 백신의 메모리가 500MB 이상이 될 경우 SMS로 alert
IIS 도 함께 메모리가 정상인지 확인하기 위해 함께 알림


그리고 각 서버에 task scheduler 에 등록하기

> 실행주기 설정



> 뭘할지 Action 설정 
powershell로 action을 등록하면 powershell 경로를 또 지정해줘야하기 때문에 bat 파일 간단히 작성해서 bat파일로 등록했다

windows server 초기엔 powershell 실행 권한?이 없기 때문에 실행할수 있도록 모드를 변경해줘야한다


[bat 파일]
powershell set-executionpolicy unrestricted
powershell C:\***_mon.ps1
powershell set-executionpolicy remotesigned





[ memory monitoring script ]
$ComputerName=$ENV:ComputerName
# 백신 프로세스 메모리 확인
$vaccine=Get-Process-ProcessNameekrn|SelectName,@{n="PrivateMemory";e={$_.PrivateMemorySize/1mb}}
# IIS ( w3wp ) - 프로세스 메모리 확인
$IIS = Get-Process -ProcessName w3wp | Select Name,@{n="PrivateMemory";e={$_.PrivateMemorySize/1mb}}

$vaccine _name = $vaccine .Name
$vaccine _memory = $vaccine .PrivateMemory
$vaccine _memory = "{0:N1}" -f $vaccine _memory
$IIS_name = $IIS.Name
$IIS_memory = $IIS.PrivateMemory
$IIS_memory = "{0:N1}" -f $IIS_memory

# $vaccine_process 가 500 이상 (-gt) 일 경우 sms을 보내주는 url을 호출해줭 
if($vaccine_process-gt 500){
    $url = ‘SMS으로 alert을 호출하는 API URL'
    Invoke-WebRequest -Uri $url
}





[ 수신한 SMS ]



끝~

2주동안 아직은 안오고 있긴한데.........





,