EC2 인스턴스가 항상 "IRQ" 상태인 이유는 무엇이며 어떻게 해야 합니까?

EC2 인스턴스가 항상 "IRQ" 상태인 이유는 무엇이며 어떻게 해야 합니까?

저는 주로 몇 가지 간단한 PHP 웹 사이트(RDS를 데이터베이스로 사용)의 웹 서버로 Apache를 실행하는 m1.small EC2 인스턴스를 가지고 있습니다. 서버의 로드 평균은 항상 매우 높습니다(약 8). 절대 5 미만이 아닙니다. 이로 인해 내 웹사이트가 2.6GHz CPU와 1.7GB RAM에서 예상했던 것보다 훨씬 느려져서 짜증날 정도로 느려졌습니다.

top그리고 친구들은 "훔친" 시간(AFAIU, 하이퍼바이저가 동일한 CPU에서 다른 VM을 훔치는 시간)의 약 50%를 제외하고 나머지는 거의 전적으로 "IRQ" 시간임을 보여주었습니다.

mpstat이 시간은 매우 안정적인 191.59 인터럽트/초에 소비되며(즉, 이 숫자는 시간이 지나도 거의 변하지 않음) "/proc/interrupts"에 따르면 이 시간은 대부분 xen-percpu-virq timer0및 에 소비됩니다 xen-dyn-event eth0.

이것들은 무엇입니까? 로드를 줄이고 PHP 웹 사이트에서 더 많은 시간을 보낼 수 있도록 EC2 인스턴스를 얻으려면 어떻게 해야 합니까?

답변1

잠시 살펴보면 "하드웨어 문제"인 것 같습니다. VM을 호스팅하는 물리적 서버는 다른 VM의 부하가 높을 가능성이 높으며 m1해당 유형의 머신에서는 성능을 보장할 수 없으므로 모든 CPU 시간은 호스트에 남아 있습니다. 설상가상으로 가상 머신이 CPU 코어 0에서 실행 중인 경우 머신에서 모든 인터럽트 처리도 수행됩니다. 이것 좀 봐젠 위키 기사"HVM VM의 첫 번째(그리고 아마도 유일한) VCPU가 완전히 활용됩니다."에서 이것도 보세요AWS는 스레드를 지원합니다비슷한 중단 문제가 있는 다른 사람을 위해.

이 시점에서 유일한 해결책은 가상 머신을 다른 물리적 호스트로 마이그레이션하는 것입니다. 때로는 VM을 중지하고 몇 분 정도 기다렸다가 다시 시작하면 매우 간단하게 완료할 수 있습니다. 그 동안 EC2가 이전 호스트에 다른 VM을 할당한 경우 다른 슬롯을 얻을 수 있으며 문제가 해결될 수 있습니다.

그래도 문제가 해결되지 않으면 가장 좋은 방법은 가상 머신에서 새 이미지를 생성하고 다른 가용 영역에서 부팅하는 것입니다. 이로 인해 IP가 교체되고 보안 그룹 및 방화벽 규칙을 업데이트해야 할 수 있습니다. 또한 이미지를 생성하기 전에 VM을 중지해야 합니다. 즉, 이미지가 생성된 후 새 VM이 시작되기 전에 이전 VM이 새 데이터를 생성하지 않도록 해야 합니다.

관련 정보