NGINX 사용의 성능 이점


16

NGINX를 사용하여 마 젠토를 제공하는 것을 고려할 때 구현 세부 사항에 대해 걱정하지 않지만 누군가가 그것에 대해 좋은 (또는 나쁜) 말을하고 있는지 알고 싶습니다. 또한 마젠 토의로드 밸런싱을 위해 NGINX를 사용하는 것이 중요합니다.


NginX가있는 전용 서버에서 2 개의 매장을 운영하고 있습니다. 트래픽이 많은 상점의 경우 NginX가 요청을 더 잘 처리하고 Magento에 더 많은 리소스를 남겨두기 때문에 가장 확실한 이점이 있습니다. 교통량이 적은 상점의 경우 어떤 혜택이 있는지 확실하지 않습니다
Sander Mangel

답변:


15

Nginx는 Magento를 호스팅하기에 확실히 좋은 선택이며 사이트 성능을 향상시키는 데 도움이되는 몇 가지 멋진 (그러나 작은) 이점이 있습니다.

Nginx와 Apache의 주요 차이점은 Nginx는 비 차단 이벤트 IO를 사용하고 Apache는 멀티 스레딩 / 프로세싱 만 사용한다는 것입니다. 차이점은 무엇이며 왜 중요합니까? 아파치의 경우, 5 개의 스레드가 있다고 말하면 주어진 시간에 5 개의 요청을 처리 할 수 ​​있습니다. 이러한 스레드 중 하나를 완료하는 데 시간이 오래 걸리면 추가 수신 요청을 처리하기 위해 4 개의 스레드 만 남습니다. 5 개의 스레드가 모두 잠기면 완료 될 때까지 들어오는 요청을 처리 할 수 ​​없습니다.

스레드가 무언가에 대한 요청을 수신 할 때 Evented IO를 사용하면 이벤트가 발생하고 다음 요청으로 바로 이동합니다. 이벤트가 콜백하면 응답을 관련 클라이언트로 전달합니다.

이것은 비동기 자바 스크립트의 작동 방식과 대략 비슷합니다. AJAX 요청을 시작하고 콜백을받을 때까지 계속 진행합니다.

이 현대적인 접근 방식은 많은 스레드 또는 작업자 시스템 프로세스의 오버 헤드없이 많은 작은 정적 파일을 제공하는 데 적합합니다.

Nginx의 또 다른 장점은 적은 메모리 공간입니다. 아파치는 많은 것들을 지원하며, 그렇게 할 때 높은 메모리와 계산 공간을 갖습니다. 다시 되돌릴 수는 있지만 Nginx는 처음부터 메모리 측면에서 희박하도록 설계되었습니다.

차이점은 크지 않지만 수천 건의 요청까지 확장하면 이러한 작은 차이가 전체적으로 큰 차이를 만듭니다.

이제 Magento 애플리케이션에서 가장 큰 성능 병목 현상은 PHP 코드 실행이라는 것을 기억해야합니다. 여기에 Apache와 Nginx의 성능에는 기본적으로 무시할만한 차이가 있습니다. 중요한 것은 PHP-FPM과 작업자 MPM을 Apache와 함께 사용하는 것입니다 (prefork / mod-php는 피하십시오). 가장 큰 이유는 PHP 코드를 실행해야 할 때 PHP 인터프리터 만 호출하고 APC와 같은 op-code 캐싱 소프트웨어를 효과적으로 사용할 수 있기 때문입니다 (이것이 얻을 수있는 가장 큰 성능 향상입니다).

마지막 요점 : 일부 모듈 / 애플리케이션은 Apache가 사용될 것으로 예상하며 ModRewrite 또는 .htaccess 파일 사용에 대한 설명서가 제공 될 수 있습니다. Nginx에는 ModRewrite 스타일이 지원되지만 디렉토리 별 .htaccess 스타일 솔루션은 지원되지 않습니다.

개인적으로 정적 콘텐츠를 효율적으로 제공하기 때문에 Nginx를 좋아합니다. PHP-FPM을 설정하는 것이 매우 쉽고 구성 구문이 매우 좋습니다. 성능 문제에 대한 마법의 해결책은 아니지만 강력하고 유연한 옵션입니다.


1
마 젠토, Inc.의 결과에 의해 뒷받침 좋은 답 : magentocommerce.com/whitepaper은
benmarks

그래도 Aaron 100 %는 동의합니다. 우리는 Apache와 비교하여 정적 콘텐츠를 더 빠르게 서버 화하고 더 많은 동시 요청을 처리 할 수 ​​있기 때문에 대부분의 Magento 배포에 Nginx를 사용합니다. 우리가 Nginx와 함께 만난 유일한 단점은 프로젝트 중 하나에 있으며 504 게이트웨이 시간 초과 오류가 임의로 발생합니다 (서버로드가 매우 낮은 경우에도). 우리는 아직이 문제를 해결하지 못했습니다. 다양한 포럼에 설명 된 대부분의 솔루션은 큰 도움이되지 못했습니다.
Vinci Rufus

1

Magento를 사용할 때 Nginx의 성능 이점은 무시할 만하다고 말합니다. Aaron이 언급 한 이벤트 기반 IO의 이점은 Apache (이벤트 MPM 사용시)에도 적용됩니다.

일반적으로 Magento에 대해 말하면 대부분의 처리 (99 %)는 PHP와 데이터베이스에서 발생하므로 처음 1 %를 최적화하면 상대적으로 적은 이점을 얻을 수 있습니다.

그러나 Magento를 위해 Nginx를 선택해야하는 다른 이유는 적은 메모리 풋 프린트, 더 나은 속도 제한 및 SPDY 지원과 같은 것입니다.

많은 .htaccess 문은 Nginx 문에 직접 매핑되지 않기 때문에 Apache에서 실행중인 기존 Magento 사이트를 변환 할 때 Nginx에 큰 단점이 있습니다. 예를 들어 Nginx는 ACL에서 호스트 이름을 지원하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.