큰 응용 프로그램을 개발 중이므로 테스트를로드해야합니다. PHP/NGinx를 실행하는 응용 프로그램 용 HighCPU Ex.Large 인스턴스가 하나있는 EC2 기반 클러스터입니다.EC2 클러스터에서 Nginx 스케일링 및 병목 확인
이 응용 프로그램은 일부 5k - 10k 키 값을 보유하는 redis 서버에서 데이터를 읽은 다음 응답을 작성하고 mongoDB 서버에 데이터를 기록하고 클라이언트에 다시 응답합니다.
언제든지 앱 서버에 요청을 보내면 약 20 - 25ms 내에 모든 계산이 끝납니다.
이제로드 테스트를하고 서버에 요청을 보내려면 랩톱에서 PHP 기반 응용 프로그램을 실행하려고합니다. 수천명의 사람들이 20-30 초가 넘었습니다. 이로드 기간 동안 브라우저에서 앱 URL을 열 때마다 다시 약 25 - 35ms의 실행 시간으로 응답합니다. 다시 멋진 메시지입니다. 그래서 나는 redis와 mongo가 병목 현상을 일으키지 않는다고 확신합니다. 그러나로드하는 동안 응답을 되 찾는 데 약 25 초가 걸립니다.
높은 CPU 예. 대형 인스턴스에는 8GB RAM과 8 코어가 있습니다.
로드 테스트 중에 top 명령은 약 4-6 개의 php_cgi 프로세스가 약 15-20 %의 CPU를 사용한다는 것을 보여줍니다.
저는 50 명의 작업자 프로세스가 nginx 및 1024 개의 작업자 연결에 있습니다.
병목 현상을 일으킬 수있는 문제는 무엇입니까?
이것이 작동하지 않는다면, 나는 임베디드 웹 서버와 임베디드 캐시를 사용하여 전체 자바 응용 프로그램으로 이동하는 것을 진지하게 고려하고 있습니다.
업데이트 - 8 PHP_FCGI_CHILDREN 증가하며로드하는 동안, 당신은 CPU 코어 당 하나 개의 작업자 프로세스를 너무 많이 필요하다
감사합니다. 나는 그 작업자 프로세스를 10으로 편집했습니다. 아직 많이 향상되지 않았습니다. 한가지 주목할 점은 단지 5 개의 php-cgi 프로세스가 실행되고 있다는 것입니다. 또한 PHP_FCGI_CHILDREN은 5로 설정됩니다. 이것을 많이 늘리면 다소 도움이 될 것이라고 생각하십니까? 내가 8 코어 있다고 생각해. –