이는 Nginx가 최신 epoll(Linux 2.6 커널) 및 kqueue(freebsd) 네트워크 I/O 모델을 사용하는 반면 Apache는 기존 선택 모델을 사용하기 때문입니다. (추천 학습: nginx 튜토리얼 )
현재 Linux에서 높은 동시 액세스를 견딜 수 있는 Squid와 Memcached는 모두 epoll 네트워크 I/O 모델을 사용합니다.
많은 연결의 읽기 및 쓰기를 처리하기 위해 Apache에서 채택한 선택 네트워크 I/O 모델은 매우 비효율적입니다.
다음은 Apache에서 사용하는 select 모델과 Nginx에서 사용하는 epoll 모델의 차이를 비유적으로 분석한 것입니다.
당신이 대학에서 공부하고 있고 당신이 살고 있는 기숙사 건물에 방이 많고, 친구들이 당신을 찾고 있어요.
선택 버전 기숙사 이모는 친구들이 당신을 찾을 때까지 방에서 방으로 찾아 다닐 것입니다.
epoll 버전의 기숙사 이모는 먼저 각 학생의 방 번호를 적어줍니다. 친구가 오면 친구에게 자신이 살고 있는 방만 알려주면 됩니다. 친구를 건물 주변으로 데려갈 필요는 없습니다. 누군가를 찾으려고.
1만명이 와서 이 건물에 사는 동급생을 찾고 싶다면 셀렉트 버전과 에폴 버전 중 누가 더 효율적인지는 자명합니다.
마찬가지로 동시성이 높은 서버에서 I/O 폴링은 가장 시간이 많이 걸리는 작업 중 하나이며 select와 epoll 중 누가 더 높은 성능을 가지고 있는지도 매우 분명합니다.
위 내용은 Apache와 nginx의 성능 차이가 많이 다른가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!