포럼
DB서버 분리가 효과 있을까요?
2012.08.16 08:35
안녕하세요.
여름 폭염이 이제는 한풀 꺽인거 같은데 모두들 건강히 잘 지내시는요.
질문성 글이긴 한데. 한 분의 답변 보다는 많은 분들의 견해가 필요해서 이곳에 올리는 것을 양해해 주시면 감사하겠습니다.
7년 가까이 제로보드4로 운영하던 사이트를 고민하다가 결국 Xe로 마이그레이션 단행했습니다.
기존 사이트는 웹호스팅을 받았는데. 하루에 10G정도의 트래픽이 초과되는 경우가 종종생기고
동접자는 백명이 안되는것 같지만, 트래픽문제와
무엇보다도 자꾸 늘어나는 자료양을 감당하지 못해서 서버호스팅을 하기로 결정했습니다.
zeroboard4의 자료들은 다소 문제가 있긴 했지만 대부분 Xe로 마이그레이션에 성공했습니다
현재 상황:
현재 웹데이터 양이 30기가 정도고 DB사용량은 40M 정도됩니다.
그리고 서버에는 Xe가 설치되었고, linkhard라는 웹하드 프로그램을 깔아서 서브도메인에 연결해 두었습니다.
LinkHard는 별도의 DB가 필요해서 DB에는 Xe와는 별도의 링크하드용 DB가 설치되어 있습니다.
DB는 mysql이고 centos가 설치되어 있습니다.
주로 사진과 동영상이 용량을 많이 잡아 먹습니다.
동영상의 경우 30여분 분량으로 500여개 정도 있습니다.
Linkhard의 경우에는 500G정도의 용량으로 활용계획입니다.
Linkhard를 이번에 기업용으로 구매했는데요.
webhard용으로 뿐만 아니라. 스트리밍서버로 활용가능해서 좋더군요
그래서 주로 동영상은 대부분 MP4로 인코딩해서 이 링크하드에 올려두고 링크만 따서 쓸 계획입니다.
이런 상황인데요.
Xe의 경우 모든 게시물과 페이지들이( Xe )zeroboard4와는 달리 xe_documents 라는 하나의 테이블에 저장되더군요.
그래서인지 게시물과 페이지의 양이 늘어나면 DB에 부하가 많이 걸리는 구조라고 생각하는데요.
얼마전 delphiXe2님의 경우 수십만개의 게시물들을 돌리는데도 속도저하가 없었다고 하던데요
게시물에 사진들이 많고 동영상게시물이 많은 경우에도 그럴수 있는지 궁금합니다.
아무튼 현재 사이트의 자료만 이전된 상태로 오픈을 준비중인데요.
아무래도 오픈하게 되면 예전 제로보드로 운영하던 사이트 보다는 속도저하가 생겨날 것 같더군요
그래서 DB서버를 별도로 구매하던가 임대하던가 할 생각도 해 보는데
문제는 가격대비 효율의 측면입니다.
DB용량이 현재 40M 인데 늘어나 봐야 100M 안팍이 될 것같은데
그 정도의 용량을 위해서 별도로 DB서버를 돌린다는 것이 과연 합당한지 확신이 안섭니다.
그리고 위에서 말씀드린 linkhard에 동영상을 저장해서 스트리밍서버처럼 사용하는데요.
이때 생기는 부하가 Xe동작에 영향을 얼마나 주는지 모르겠네요.
(같은 서버안에 Xe와 웹하드가 같이 설치되어 있어서요)
현재 계획은 HP DL160 G6모델을 웹서버로 구매할 계획이구요
(Westmere E5606, DDR3 4G, SATA 1TB / 회선: 1Gbps 네트워크)
구입비:186만원에 월 72000원)
DB서버는 임대형에 속도를 감안해서 Hdd대신 ssd를 붙일 계획입니다.
(인텔서버인데요. CPU : Dual Core 2.4GHz/ RAM : DDR3 4G/SSD 64G/회선: 1Gbps 네트워크)
구매비없이 월 79000원)
질문 핵심:
위와 같은 상황에서 DB서버를 임대형이든 구매형이든 별도로 구입해서 활용하는 것이
가격대비 효율의 측면에서 괜찮은건지 알고 싶습니다.
서버와 DB쪽 잘 아시는 분들 께서 조언을 좀 해주시면 감사하겠습니다.
(1~2일내에 결정을 해야 합니다^^;;;)
댓글 21
-
cherryfilter
2012.08.16 09:21
-
황비
2012.08.16 13:09
감사합니다. 친히 답변까지.^^
관심가지고 개발자분께서 답변 주시니 황공스럽습니다. ㅎㅎ
근데 innoDB는 사용해 본적이 없어서요..
MySql의 경우에는 대부분 PhpMyAdmin만 설치해서 사용하면 편리한데.
innoDB관리는 그런 툴이 있나요? 아니면 ssh로 접속해서 작업해야 하나요?
-
cherryfilter
2012.08.16 18:21
phpMyAdmin 쓰시는건 db type이랑 전혀 상관 없습니다. ^^
그냥 phpMyAdmin그대로 쓰시면 되요 ^^
-
휘즈
2012.08.16 10:34
위 서버에 메모리를 올리면 부족하지 않을 것 같습니다.
1. 메모리를 8G 여유가되면 16G로 올리시고
2. innoDB 사용하시고
3. http 및 db 최적화
실제적으로 서버에 가장부담을 주는 부분이 웹서버 보다는 디비입니다.
xe가 최근버전에서 많이 개선되기는 하였지만
xe특성상 db를 많이 사용하니 메모리를 충분히 확보하는 것이 필요할 것입니다.
추가: 가급적 제온cpu 사용하세요
-
황비
2012.08.16 13:04
친절한 답변 감사합니다. 휘즈님.
1.메모리도 여유있게 주면 좋겠지만, 이 것 역시 비용대비 효율면에서 어느정도 까지가 좋을지 확신이 안서네요ㅠㅠ
2. innoDB를 사용해 본적이 없어서요. Xe에서 문제가 생겼다는 글을 어디선가 본적이 있어서요.
innoDB의 경우 사용측면에서 어떤가요? MySql의 경우 PhpMyAdmin이란 사용하기 쉬운 툴이 있어서 좋은데
innoDB도 이와 유사한 툴이 있나요? 아니면 ssh로 접속해서 다루어야 하나요?
3. DB 체적화가 어떤건지... 알 수가 없네요. server세팅에서 최적화를 의미하신건가요?
Westmere Quad Core 인데 이게 샌디브리지 다음세데 인텔 zeon CPU 아닌가요? 잘 모르겠어요. 서버쪽 CPU는...@@
시간 되시면 추가답변 좀 부탁드리구요. 감사합니다
-
휘즈
2012.08.16 13:51
1. 메모리 사용은 시스템(os) / 웹서버 / 디비가 서로 경쟁관계에 있습니다.
웹하드가 innodb를 지원 안한다면 myISAM을 사용해야 하기 때문에 이것도 메모리사용에 경쟁관계에 놓이게 됩니다.
메모리 할당을 어떻게 하는가가 바로 시스템최적화 중 하나이지요
장단점이 있겠지만 웹환경에서 innodb 가 확실히 유리합니다.
4G로 시작을 하고 나중에 올리는 것도 좋은 방법입니다.(사실 4G도 대용량입니다.^^;)
2. myISAM과 innoDB는 Mysql의 디비엔진이기 때문에 설치 단계에서 myISAM이냐 innoDB냐의 선택의 문제이지, xe사용자로서는 차이 없습니다.
phpMyAdmin에서 도 myISAM과 innoDB 관계없이 사용방법 같습니다.
3. db최적화는 innodb 또는 myISAM에서 메모리 설정을 어떻게 하느냐인데
메뉴얼대로 해도 큰문제 없습니다.
westmere는 i7기반 32나노공정을 의미하는 것으로 알고 있고
대부분 인텔 제온 웨스트미어 라고 표기합니다.
호스팅사에 문의하시는 것이 가장 정확
제온cpu를 사용하라는 것은 서버부품을 사용한 서버를 사용하라는 의미입니다.
-
황비
2012.08.16 17:01
자세한 설명 감사합니다. 휘즈님.
그러고 보니 휘즈님이 서버관련업을 하신다고 들었던것 같은데 맞나요?
innoDB를 사용하고자 할 경우에 말인데요
현재 이미 데이터에 대한 마이그레이션이 대부분 마무리 되어 MySql을 사용중인데
어떻게 자료들을 innoDB로 옮겨갈 수 있지요?
그리고 Xe 설치초기에 이미 DB종류를 MySql로 선택했는데,
설치 이후에도 DB변경이 가능한가요?
-
휘즈
2012.08.16 17:30
서버관련업 아니구요
it와 무관한 업종 회사원입니다.^^;
innodb도 mysql 입니다. mysql이 사용하는 디비엔진 중 하나입니다.
myISAM 엔진을 사용하던 것을 innodb엔진으로 바꾸는 것을 말합니다.
구글에 많이 나와 있습니다만
가장 빠른 방법은 덤프받은 sql파일을 텍스트 편집기에서 type을 myISAM에서 innodb로 수정한 후 복구하면 되는 것으로 알고 있습니다.
-
황비
2012.08.16 18:11
아~! 간단해 보이는 군요.
답변 너무 감사합니다.
IT 무관한 업종이시면서도 참 많이 아시네요?
그런데 MySQL에서 InmoDB로 옮겨가면 어느 정도 효과를 보게 될까요?
참~! 한가지 더 질문 드릴께요.
DB와 XE설치를 HDD대신 ssd를 쓰는 것은 어느 정도 체감할 만한 효과가 있을까요?
-
휘즈
2012.08.16 23:07
서버운영에 있어서 하드웨어와 소프트웨어 모두 보수적으로 운영하는 것이 좋습니다.
완전히 검증된 것만 사용하는 것이 좋습니다.
ssd가 서버용으로 판매하는 것이 있다면 그것을 사용해도 괞찬겠지만 그렇지 않다면 보류하는 것이 좋을 것 같습니다.
서버용 부품은 같은 기능, 비슷한 성능이라 하더라도 작게는 2~3배 많게는 10~20배이상 가격차이가 납니다.
그이유가 반드시 있습니다.
-
銀童
2012.08.16 11:20
DB 사용량이 40메가인데 16기가 메모리가 의미가 있나요? [..]
메모리 버퍼 풀에 전부다 올라갈수있는데 그 이상의 메모리는 큰 의미가 없을것 같습니다.
-
휘즈
2012.08.16 11:34
hdd상의 디비용량으로 이해했습니다.(아마 맞을 겁니다.)
디비 트래픽은 그이상일겁니다.
-
황비
2012.08.16 12:57
네. 휘즈님
HDD상에 저장된 DB양이 그 정도입니다.
DB 트래픽은 정확히 모르겠지만,
XE구조상 사이트의 트래픽이 대부분 DB에서 발생하지 않나요?
-
휘즈
2012.08.16 13:17
데이타베이스에 대한 질의/응답량이니까 사이트 트래픽은 아닙니다.
phpMyAdmin에서보면 트래픽 볼수 있습니다.
-
銀童
2012.08.17 16:32
트래픽과 상관없지요. 데이터베이스에서 innodb 라면 메모리가 크게 많지 않아도 해당용량을 전부 메모리 버퍼풀에 올릴수 있으므로 하드 상의 디비용량에 따라서 메모리의 필요도를 측정할수 있다고 봅니다.
-
윈컴이
2012.08.16 11:37
Xe의 경우 모든 게시물과 페이지들이 Xe와 달리 xe_documents 라는 하나의 테이블에 저장되더군요.
읽다가.. Xe가 두번 있단든게 함정..?!
DB는 안나누는게 좋을 것 같네요. ㅎ
-
황비
2012.08.16 12:56
XE가 아니고 zeroboard의 오타(오류)였습니다.
제로보드가 게시판마다 테이블이 있는데 XE는 모든 게시판의 게시물들과 페이지들까지 모두 하나의 테이블인 Xe_documents에 저장된다는 말이었습니다.
지적 감사합니다. 윈컴이님^^
-
미노아
2012.08.17 02:13
동접이 100명수준이시면 서버 사양만 좋으면 분리 안하셔도 되지 않을까 싶습니다.
시스템 2대를 렌트해서 사용하실 수준이면 한대 고사양만으로 그정도는 되지 않을까 싶습니다.
사양만 좋으면...애널리틱스 기준으로(체류 시간이나 사용패턴에 따라 다르겠지만) 천명까지는
innodb+고용량 램으로 감당하실수 있을거 같습니다.
디비 데이타 양이 많아도 실제로 사용자가 조회하는 부분은 한정되어 있으니까요
디비가 40메가이면...OS+WEB+DB합쳐도 8기가만 되도 충분하지 않을까 싶습니다.
물론 향후 빠른 성장이 예상되고 자금이 여유가 되시면 분리하시면 시스템 로드가 확 내려가면서
스트레스도 확 내려가는 장점이 ㅠ.ㅠ
프로모션해서 로드가 30넘어가면서 버벅이면 정말 관리자는 ㅠ.ㅠ
황비님 실례지만 어디 호스팅인지 알수 있을까요?
저도 오늘 내일 호스팅을 옮겨야되서 가격표 뽑고 있습니다.
부탁드리겠습니다.
-
황비
2012.08.17 19:15
호스팅사는 고도몰, 고도호스팅사입니다.
서버가격은 가비아쪽이 좀 싸긴 하던데, 회선 상면비가 좀 더 비싸서
결국 그게 그거드라구요.
-
황비
2012.08.17 19:22
꼼꼼히 챙겨 읽으시고 조언해 주신 모든 분들에게 감사드립니다.
결국 DB를 서버로 따로 분리하는 것은 가격대비 효율을 따져서 포기하고
SAS Hdd에 XE와 DB를 설치하고 SATA 하드 하나 더 달아서 웹하드를 설치하기로 했습니다.
대신 램을 8G로 업하구요.
그래서 일단 하나의 서버로 돌리다가 버벅거리면
스트리밍호스트역할을 해 주는 웹하드 서버를 별도 분리하기로 결정했습니다
(BNU님의 탁월한 조언에 힘입었습니다)
DB에 InnDB로 가는 문제는 서버호스팅회사에서 자료손실의 위험이 있다고 겁주네요?
그래서 DB문제는 좀 더 알아보고 결정할 예정입니다.
조언주신 모든 분들에게 감사드립니다.
-
데미갓
2012.08.17 19:56
서버 업그레이드로 메리트를 보시려면 우선 적절한 분석이 필요합니다. 웹서버, DB, 스트리밍 크게 세가지 프로세스의 사용율을 로깅해서 분석이 필요할듯 합니다. 적절한 분석없는 확장은 사용자가 임계치를 넘어선 경우에는 분명 메리트가 있겠지만 동접100명이라면 사용자측면에서 느끼는 사용감은 개별 트랜잭션의 레이턴시 및 수행시간에 매우 밀접하므로 전혀 개선된점을 느끼지 못할 가능성이 큽니다. 저도 최근에 제로4에서 xe로 넘어와서 이리저리 본 결과 파일캐시 사용으로인한 디스크 io 성능 개선이 체감 성능에 큰 영향을 주는듯 합니다.
Mysql의 myisam에서 innodb로의 변경이 성능에 영향을주지는 못할듯합니다. Innodb의특징은 트랜잭션을 지원한다는 점이 가장 클듯하며 트랜잭션을 xe에서 사용해주어서 정합성 또는 성능개선의 여지가 있다면 모를까 xe 의 경우는 엔진에 따라서 쿼리나 구조가 틀려지지는 않기때문에 보다 많은 로깅을 하는 innodb 가 속도면에서 성능적으로 나아지기는 어려울듯 합니다. 중요데이타라면 오히려 성능 보다는 안정성이나 정합성에서 myisam보다 우수할듯 싶습니다.
사용자관점에서의 단순 체감 성능을 올리기 위해서는 우선 서버에서 발생하는 job들의 병목을 파악하는 편이 도움이될듯하며, 일반적으로 xe에서의 io부분 성능 개선을 위해서 최대한 디스크 io가 발생하지 않도록 mysql의 캐시등 파라메터 최적화와 xe의 파일캐시 성능을 위한 멤캐시등 웹캐시 최적화가 가장 적은 비용으로 최대의 효과를 볼수있는 부분일듯 합니다.
일반적이지 않은 부분이 오히려 스트리밍 서비스 아닌가 싶은데요. 이부분은 cpu사용율과 밀접할것으로 생각이되며 스트리밍 서비스의 네트워크 사용량과 cpu 사용량을 로깅하여 개선점을 찾아보는게 좋을듯 합니다.
이미 시일이지나 쓸모없는 답변이 되었을수도 있을거같네요. ^^
mysql이라면 innoDB로 가시구요.
데이터 용량이 많지 않다면, HDD 용량은 크게 상관 없을 듯 싶습니다.
innoDB라면 오래 사용하면 할 수록 메모리 DB처럼 동작하는 특성이 있으니 메모리에 여유있는 스펙으로 고려하시면 좋을 것 같습니다.
이 셋티에서도 부족함이 들어날 경우 차차 늘려나가는 방법을 사용하시면 됩니다.
기본적으로 master, slave 구조로 나중에 확장하시면 왠만큼 큰 사이트도 이상 없을 것으로 생각 됩니다.