서버에 대한 질문입니다... 조언좀 부탁드려요
본문
1. 현재 vps호스팅을 이용하고 있습니다.
8cpu에 12ram 240기가 하드 사양입니다.
2. 하지만 동시접속자 수(회원기준) 300명 정도가 되니 사이트가 느려집니다.
3. 특히 첨부파일 2메가 정도의 이미지를 수십명이 한 번에 다운로드 받으면 사이트가 툭, 툭 끊어질 정도로 느려지고 있습니다. 이때 cpu사용량을 보면 mysql이 500~600%까지 올라갑니다.
4. 그래서 전용서버로 이전해보려고 합니다.
현재 제가 보고 있는 전용서버 사양은 다음과 같습니다.
cpu 2x8 코어 16쓰레드 @ 2.1 GHz (3 GHz) Dual Xeon E5-2620 v4
32기가 ddr4램
2x240 SSD
이걸 보고 있는데, 이 정도면 충분히 사이트를 렉 없이 돌릴 수 있을지 궁금합니다.
답변 6
300명의 동시 접속자와 대용량 파일 다운로드로 인한 부하로 인해 사이트가 느려지고 CPU 사용량이 높아지는 문제가 발생하고 있습니다.
이러한 상황에서 성능 개선을 위해 다음과 같은 방법을 고려해 볼 수 있습니다.
1.웹 서버와 데이터베이스 서버 분리
현재 웹 서버와 데이터베이스 서버가 동일한 서버에서 운영되고 있는 것으로 보입니다. 이 경우,
서버의 자원이 웹 서버와 데이터베이스 서버를 모두 처리해야 하므로 성능 저하가 발생할 수 있습니다.
따라서 웹 서버와 데이터베이스 서버를 분리하여 서로 다른 서버에서 운영하는 것이 좋습니다.
이를 통해 데이터베이스 서버에서 처리되는 작업이 웹 서버에서 처리되는 작업과 분리되므로 서버 부하가 분산되어 성능이 향상될 수 있습니다.
2.캐싱 적용
웹 사이트의 성능을 향상시키기 위한 방법 중 하나는 캐싱을 적용하는 것입니다.
캐싱이란 웹 페이지나 이미지와 같은 자원을 브라우저나 CDN(Content Delivery Network) 서버 등에 저장해두고,
다음에 같은 자원을 요청할 때 서버에서 바로 가져오지 않고 캐시에서 먼저 찾아보는 것을 말합니다.
캐싱을 적용하면 웹 서버에서 처리해야 할 요청 수가 줄어들어 성능이 향상될 수 있습니다.
3.로드 밸런싱
로드 밸런싱은 여러 대의 서버에 부하를 분산시켜서 성능을 향상시키는 기술입니다. 웹 서버에 부하가 집중될 경우,
로드 밸런서가 부하가 적은 서버로 요청을 전달해주는 방식으로 서버 부하를 분산시킵니다.
따라서 로드 밸런싱을 적용하면 웹 서버에서 처리해야 할 부하가 분산되어 성능이 향상될 수 있습니다.
4.DB 인덱스 최적화 및 쿼리 튜닝
데이터베이스 인덱스 최적화와 쿼리 튜닝을 통해 데이터베이스 성능을 향상시킬 수 있습니다.
인덱스는 데이터베이스에서 테이블의 검색 속도를 향상시키기 위한 방법 중 하나로, 적절한 인덱스를 설정
챗gpt 답변입니다.
slow query log를 살펴 보세요.
어떤 사이트냐에 따라 틀리죠.
커뮤니티 처럼 이미지+글과 함께 검색(쿼리) 가 많은 사이트면
300명이 아니라 100명이 동접해도 버티기 어렵습니다.
어떤 페이지에 트래픽이 집중되는가 채크해보시고
해당 회선 전송속도에 의한 병목구간도 채크해보셔야 할것 같습니다.
3번은 대역폭제한 때문인것 같네요.
서버가 느려지는건 복합덕인 이유가 있습니다.
시존 서버고 최적화를 통해서 300명까지는 무난하게 처리가 가능할수 있습니다.
신규 서버는 사양이 기존대비 2-3배 좋으니, 300명은 무리없이 처리될겁니다. 문제는 동접자 늘어나면, 상황이 다시 발생하는것이죠.
하드웨어 스케일업하여 문제를 처리하는건 쉬운 방법이지만 고정비가 증가하고, 단일서버 사양을 무한정 올릴수 없다는 단점이 있습니다.
서버속도는 구축환경도 일정부분 확인되지만
코딩에도 차이가 납니다.
서버 전문가와 상담 후에 작업 하시는걸 추천 드립니다.
서버에 해박한 지식이 없으시다면 서버 작업을
직접 하실지 전문가에게 의뢰 하실지를 결정하는게 좋을것 같네요.