programing

iis에서 작업자 프로세스로 인한 CPU 사용을 100% 방지하는 방법

lovejava 2023. 6. 23. 21:09

iis에서 작업자 프로세스로 인한 CPU 사용을 100% 방지하는 방법

윈도우즈 Server 2008-R2에서는 대부분의 시간 동안 자체 vps, VMware, 쿼드코어 및 4GB RAM을 사용하여 CPU를 사용합니다.이 100인 것은 Windows 작업관열를리고모소니이스로다동터니발생합인이해유로같은다사과음용리면하이자%▁▁is▁of▁100▁windows▁because입니다.workerprocess.exeIIS에는 . IIS에는 3개의 웹사이트가 있습니다.

  • 해당 사용의 원인이 되는 웹 사이트를 확인하려면 어떻게 해야 합니다.
  • CPU 사용량을 80%로 제한하려면 어떻게 해야 합니까?
  • DDOS 공격일 수 있습니까?
  • DDOS를 예방할 수 있는 방법이 있습니까?

vps에 eset-nod32를 설치했는데, 로그에 공격이 나타나지 않습니다.IIS에 대해 검색하고 DDOS를 방지하기 위해 IP 주소를 금지하는 확장 기능을 찾았지만, 트래픽을 생성하는 IP 주소를 어떻게 찾을 수 있습니까?

는 웹사트는같다습니음과다이로 .ASP.NET그리고.C#해당 웹 사이트에서 무슨 일이 일어나고 있는지, CPU 사용을 유발하는 코드 줄을 어떻게 확인할 수 있습니까?

또한 웹 사이트 중 하나가 관리자의 바탕 화면에 액세스하여 일부 파일을 읽고 써야 합니다.그래서 애플리케이션 풀 -> ID(Process Model)를 로컬 시스템으로 변경했는데 CPU 사용량과 관련이 있는지 모르겠습니다.

진단 중

문제의 원인이 되는 앱 풀의 진단과 관련하여 다음을 수행할 수 있습니다.

  1. 서버 선택
  2. IIS > 작업자 프로세스로 이동

Server Settings

이렇게 하면 다음과 같은 메뉴가 표시되어 모의 실행 중인 앱 풀을 확인할 수 있습니다.

Worker Processes

여기서 앱 풀을 다시 시작하기만 하면 10번 중 9번은 즉시 발생하는 문제를 해결할 수 있습니다.

치료

논란이 많은 비즈니스를 운영하지 않는 한 DDOS 공격이 아닐 수 있습니다.일부 코드는 다른 서버에 연결할 수 없거나 루프에 걸리거나 리소스가 잘못 할당되었거나 앱 풀이 한동안 재활용되지 않았기 때문에 중단되었을 수 있습니다.

앱 풀을 수동으로 식별, 로그인 및 재활용하지 않고도 이 문제를 프로그래밍 방식으로 처리할 수 있습니다.앱 풀에서 CPU 속성을 구성하기만 하면 됩니다.특정 시간 동안 CPU 임계값에 도달하면 언제든지 프로세스를 종료하고 자동으로 재시작하도록 할 수 있습니다.

이 경우 80%에서 다시 시작하려면 앱 풀을 마우스 오른쪽 버튼으로 클릭하고 고급 설정으로 이동하여 다음 구성을 적용할 수 있습니다.

App Pool Advanced Settings

참고: kraken101이 지적했듯이, 다른 IIS GUI는 시간이 지남에 따라 이를 다르게 처리했습니다.구성 값은 항상 1/1000/%이지만 GUI가 전체 백분율을 차지하는 경우도 있습니다.

다음과 같이 구성 섹션에 추가할 수 있습니다.

<applicationPools>
   <add name="DefaultAppPool">
     <cpu limit="80000" action="KillW3wp" resetInterval="00:01:00" />
   </add>
</applicationPools>

또는 Powershell의 웹 관리 모듈을 사용하여 다음과 같이 스크립팅할 수 있습니다.
(*웹 브라우저-도구가 활성화되었는지 확인)

Import-Module WebAdministration

$appPoolName = "DefaultAppPool"
$appPool = Get-Item "IIS:\AppPools\$appPoolName"
$appPool.cpu.limit = 80000
$appPool.cpu.action = "KillW3wp"
$appPool.cpu.resetInterval = "00:01:00"
$appPool | Set-Item

예방

위의 단계는 문제를 해결하는 데 도움이 되지만 근본적인 문제를 해결하지는 못합니다.

다음은 성능 모니터링에 대한 몇 가지 리소스입니다.

글쎄요, 이것을 알아내는 데는 오랜 시간이 걸릴 수 있습니다.범위를 좁힐 수 있는 몇 가지 요점:

  • CPU를 죽이는 원인을 식별합니다.프로세스 탐색기 http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx 를 추천합니다.
  • AppPool이 이 문제를 일으키는 원인 식별
  • 코드 수정

PerfMon을 사용하여 데이터를 수집하고 DebugDiag를 사용하여 분석합니다.

유사한 문제를 검색하는 동안 이 링크를 찾았습니다.

http://www.iis.net/learn/troubleshoot/performance-issues/troubleshooting-high-cpu-in-an-iis-7x-application-pool

저는 최근에 동일한 문제에 직면했고, 저에게 효과적인 솔루션을 찾았고 메모리 소비 수준을 크게 낮췄습니다.

솔루션:

먼저 메모리 사용량이 많은 애플리케이션을 찾습니다.

태스크 관리자의 상세 내역 섹션에서 이를 확인할 수 있습니다.

다음 분.

  1. IIS 관리자를 엽니다.
  2. 애플리케이션 풀을 클릭합니다.시스템에서 사용 중인 많은 응용 프로그램 풀을 찾을 수 있습니다.
  3. 이제 작업 관리자에서 메모리 사용량이 많은 애플리케이션을 찾았습니다.이를 위한 여러 옵션이 있을 수 있으며 응용 프로그램의 응용 프로그램 열에서 '1'이 있는 옵션을 선택해야 합니다.
  4. 오른쪽에 있는 응용 프로그램 풀을 클릭하면 응용 프로그램 풀 편집 아래에 고급 설정 옵션이 표시됩니다.고급 설정으로 이동합니다. 5.이제 일반 범주에서 32비트 응용 프로그램 사용참으로 설정합니다.
  5. IIS 서버를 다시 시작하거나 작업 관리자의 성능 섹션에서 사용량이 감소하는 것을 볼 수 있습니다.

이 해결책이 당신에게 효과가 있다면 제가 알 수 있도록 코멘트를 추가해주세요.

w3wp를 볼 수 있는 많은 이유가 있습니다.높은 CPU 사용량을 실행합니다.저는 6가지 일반적인 원인을 선택했습니다.

  1. ASP.NET 웹 응용 프로그램 내의 높은 오류율
  2. 웹 트래픽 증가로 인해 CPU 사용률이 높음
  3. 응용 프로그램 종속성 문제
  4. 가비지 컬렉션
  5. ASP.NET 파이프라인 어딘가에서 차단되거나 중단되는 요청
  6. 최적화해야 하는 비효율적인 .NET 코드

필요하지 않으면 웹 사이트의 해당 응용 프로그램 풀에서 '32비트 응용 프로그램 활성화'를 해제합니다.

이것은 나의 로컬 기계에서 작동했습니다.

procmon을 사용하여 문제를 정의합니다.

최근에 저도 이 문제를 겪었는데, 문제의 원인이 어떤 AppPool인지 파악한 후에는 해당 AppPool을 완전히 제거하고 사이트에서 사용할 수 있는 새로운 AppPool을 생성하는 방법밖에 없었습니다.

언급URL : https://stackoverflow.com/questions/14992383/how-prevent-cpu-usage-100-because-of-worker-process-in-iis