안녕하세요. 아하 (a-ha) 프로그래밍 지식 답변자 입니다.
mysqld 튜닝 최적화는 잘 모르기 때문에 웹서버만 설명 드리겠습니다.
우선 가장 쉬운 과부하 테스트는 Jmeter를 사용하여 동시 접속자를 천천히 늘리는 것 입니다. 만약 순간 동시접속자가 엄청나게 많을 것 같다면 테스트 시간을 짧게 가져가면 됩니다.
그리고 Jmeter는 단일 서버로 실행할 수 있지만, 많은 부하를 주고 싶을 경우 단일 서버가 아닌 마스터서버 1대와 부하발생 서버 여러대로 구성할 수 있습니다. 그리고 테스트 결과는 csv 형태로 저장할 수 있기 때문에, DBMS에 Import하여 원하는 결과를 뽑을 수도 있습니다.
[ 하드웨어 스펙과 무관한 튜닝 방법 ]
하드웨어 스펙이 좋다면 리눅스 커널 튜닝이나 Nginx 설정 값을 변경하여 사용하면 되지만 그렇지 못할 경우 CDN과 같은 서비스를 이용하는 방법이 있습니다. 실제로 아프리카tv, 트위치tv 같은 대형 웹서비스 업체들은 정척 컨텐츠 제공을 위한 웹서버도 있지만 필수적으로 CDN을 사용합니다. CDN은 원본 서버와 멀리 떨어진 사람도 원본서버와 가까운 사람 처럼 동일한 서비스 속도를 제공해 줄 수 있기 때문이죠.
VOD, 라이브 스트리밍 CDN은 좀 복잡하므로 보통의 웹서버 기준으로 설명 드리겠습니다. HTML, CSS, Javascript같은 정적 파일은 Nginx를 웹서버 오리진으로 설정하여 컨텐츠를 캐싱합니다. 이렇게 하면 Nginx는 API 요청만 캐싱하거나 백엔드 애플리케이션으로 프록시를 하므로 Nginx의 부하를 획기적으로 줄일 수 있습니다.
답변이 도움이 됐으면 합니다. 좋은 하루 되세요!