서버에 대한 질문입니다... 조언좀 부탁드려요

서버에 대한 질문입니다... 조언좀 부탁드려요

QA

서버에 대한 질문입니다... 조언좀 부탁드려요

답변 6

본문

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 답변입니다.

또 다른 답변...

이 정도의 서버 스펙으로 동시 접속자 300명을 수용하는 것은 가능합니다. 그러나 다운로드로 인한 부하가 발생하면 이에 대한 처리 능력이 중요해집니다.

파일 다운로드는 많은 양의 데이터를 처리하기 때문에 CPU, 메모리 및 디스크 I/O에 많은 부하를 유발합니다.
이 문제를 해결하기 위해서는 다음과 같은 방법을 고려할 수 있습니다.

1.CDN(Content Delivery Network) 적용: CDN을 이용하여 사용자들이 다운로드하는 파일을 서버가 아닌 분산된 네트워크에서 다운로드할 수 있도록 합니다.
이는 서버의 부하를 분산시켜주고 다운로드 속도를 향상시킬 수 있습니다.

2.캐싱: 서버에서 파일을 불러올 때 캐시를 사용하여 이전에 다운로드 받았던 파일을 메모리나 디스크에 저장해두고 재사용합니다.
이렇게 하면 반복적인 파일 다운로드 작업을 줄일 수 있습니다.

3.파일 용량 제한: 파일 다운로드 용량을 제한하여 큰 파일을 동시에 많이 다운로드하는 경우를 방지할 수 있습니다.

4.웹 서버 최적화: 웹 서버의 최적화를 통해 성능을 향상시킬 수 있습니다.
예를 들어, Nginx와 같은 웹 서버를 사용하면 더 적은 자원으로 더 빠르게 응답할 수 있습니다.

5.DB 최적화: 다운로드 기록을 데이터베이스에 저장하고 있을 경우,
데이터베이스의 최적화를 통해 성능을 향상시킬 수 있습니다.

위 방법들을 적용하여 서버를 최적화하면 동시 접속자 300명 이상도 안정적으로 처리할 수 있을 것입니다.

또 다른 답변..

[서버에서 램의 역할]

RAM은 "랜덤 액세스 메모리(Random Access Memory)"의 약자로,
컴퓨터의 주기억장치 중 하나입니다.

CPU가 실행하는 프로그램과 데이터를 저장하는 공간으로서,
현재 실행 중인 프로그램이 필요로 하는 데이터를 빠르게 읽고 쓸 수 있도록 하는 역할을 합니다. CPU가 RAM에 접근하는 속도는 하드디스크(HDD)와 비교해서 훨씬 빠르기 때문에,
RAM은 높은 처리 속도와 빠른 응답 시간을 제공합니다.

또한, 서버에서는 여러 사용자가 동시에 접속하고 데이터를 처리하기 때문에,
대용량의 RAM을 가지고 있으면 여러 사용자가 동시에 데이터를 처리할 때 빠른 속도로 처리할 수 있습니다. 따라서,
서버에서는 RAM 용량이 매우 중요하며, 높은 용량의 RAM을 가지고 있을수록 성능이 향상됩니다.

slow query log를 살펴 보세요.

어떤 사이트냐에 따라 틀리죠.

커뮤니티 처럼 이미지+글과 함께 검색(쿼리) 가 많은 사이트면

300명이 아니라 100명이 동접해도 버티기 어렵습니다.

 

어떤 페이지에 트래픽이 집중되는가 채크해보시고

해당 회선 전송속도에 의한 병목구간도 채크해보셔야 할것 같습니다.

3번은 대역폭제한 때문인것 같네요.

서버가 느려지는건 복합덕인 이유가 있습니다.

시존 서버고 최적화를 통해서 300명까지는 무난하게 처리가 가능할수 있습니다.

 

신규 서버는 사양이 기존대비 2-3배 좋으니,  300명은 무리없이 처리될겁니다. 문제는 동접자 늘어나면, 상황이 다시 발생하는것이죠. 

하드웨어 스케일업하여 문제를 처리하는건 쉬운 방법이지만 고정비가 증가하고, 단일서버 사양을 무한정 올릴수 없다는  단점이 있습니다.

 

 

 

서버 전문가와 상담 후에 작업 하시는걸 추천 드립니다.

 

서버에 해박한 지식이 없으시다면 서버 작업을

직접 하실지 전문가에게 의뢰 하실지를 결정하는게 좋을것 같네요.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 591
© SIRSOFT
현재 페이지 제일 처음으로