DB접속 에러로 인해 홈페이지 접속이 안되는 문제 2 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

DB접속 에러로 인해 홈페이지 접속이 안되는 문제 2 정보

DB접속 에러로 인해 홈페이지 접속이 안되는 문제 2

본문

그누보드와 영카트로 홈페이지를 돌리고 있는데



최근들어 서버가 자꾸 DB에러가 나면서 죽어버리는데
그때마다 리부팅을 하면 괜찮았는데 요즘은 아예
리부팅이 먹히지 않고 아래와 같이 콘솔자체가 죽어버리네요
사람이 많이 몰려서 mysql이 죽는것 같기도 한데

무슨 문제점인지 감이 안잡히니.....

어떤것 부터 점검을 해봐야 할까요?

------------------------------------------------------------------------
http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=134801&page=3

몇일째 이전에 올렸던 위의 질문으로 해결이 안되어 헤매고 있습니다

다시한번 질문합니다.

피크타임이 되면 mysql에 CPU와 메모리를 점유하다가

DB접속 오류가 떠버립니다.



서버회사에도 여러번 의뢰를 했는데 서버문제는 아니라는 결론인데



일단 mysql데몬이 구동되면 시작과 함께 거의 메모리가 풀이 되어버리고요(사진첨부)

보통 동시접속자 100명정도에 이렇게 계속 버벅이다가 DB접속 오류가 떠버립니다.

SB OPTERON 4WD SCSI 메모리 2기가인데 이정도는 충분히 버텨줘야 하는것

같거든요.



mysql데몬이 뜨자마자 저렇게 CPU를 많이 점유하고 메모리를 먹는 이유가 무엇일까요??




댓글 전체

접속해본결과 페이지 열리는 시간이 많이 걸리네요.
그누보드나 영카트를 그대로 사용했다면 하드웨어나 mysql 데몬(서버) 를 의심해볼만하나...
아마도 개발과정에 필요에 의해서 프로그램을 많이 변경하지 않았나 생각이 됩니다
그과정에서 기존의 데이터베이스에 테이블를 새로 생성하거나 테이블을 변경하지 않았나 싶습니다.
그러다 보면 쿼리 하나 처리하는 시간도 엄청난 시간과 시스템 자원을 사용하게 되면겠지요
mysql 웹관리자 phpmyadmin 툴을 이용해서 table 살펴보시면 부담 치나치게 높은값이나.
혹은 table 사이즈 큰것, 변경이 많이 되었던것 혹은 사이트 접속시 특히나 느리게 뜨는 페이지 등을
살펴보는 수 밖에 없습니다.
제가 보는 관점에서는 데이터베이스 최적화가 되지 않아서 생기는 프로그램 문제로 생각이 됩니다.

의심스러운 페이지를 제외(잠시 접속안되도록) 처리를 하면서 찾아보셔야 할것 같습니다.
사이트 워낙 커서 고생이 좀 되시겠네요 하지만 운이 좋으면 찾을수 있지 않을까요?

데이터베이스 최적화, 대용량데이터베이스 처리 와 같은 기술자료를 찾아보시는 것도 좋을듯..
Dorcus님 아직 해결의 실마리가 안잡히시는 모양이군요... 혹여 저처럼.. 서버단에 전혀 문제가 없고 컨텐츠가 많아서라고 가정을 하구요..
컨텐츠가 많아서.. mysql 리소스가 부족하여 버벅거리다 죽는문제, 꼭 필요한 컨텐츠이고 출력을 해줘야 하는부분이라면 저와 비슷한 방법으로 마이그레이션 해보세요. 저 같은 경우 메인에 회원로그인정보, 생일자, 카운팅 요렇게 세놈만 들어가면 서버가 엄청 버벅거리길래... 어떻든 해결책을 강구한겁니다. 짧은 말재주에.. 이해가 되실지 모르나.. ;; 다른 보시는분 설명을 해주셔도 됩니다. 수작업도 좀 필요하고.. 어떻든..

한 예로.. 현재 로그인한 회원이라면.
우선... 현재 로그인 회원정보를 담을 테이블에서 현재 로그인한 회원정보를 읽어오는 부분을.. 그파일을 이용해서 2차 html 생성하는 페이지로 아래처럼 변조합니다. 소스에서...
for 문 위에

$file = "../저장하고픈 경로/저장할 파일.php";  //여기 담기는 내역은 순수 html 로 별도 데이타베이스에 쿼리하지 않습니다.
$f = @fopen($file, "w");
fwrite($f, "<table>\n");
를 선언해 주고...
for~ { 를 시작으로 아래에 출력될 내용들을 돌리는데요.. 그부분 중 웹페이지에 표기되는 내용을 아래에 넣어줍니다.
fwrite($f, "\n");  //여기서 부터 출력되는 내역 중 html 형식으로 출력내용을 코딩해 줍니다.
fwrite($f, "<tr><td>..........................</td></tr>\n");
fwrite($f, "<tr><td>..........................</td></tr>\n");
fwrite($f, "<tr><td>..........................</td></tr>\n");
fwrite($f, "<tr><td>..........................</td></tr>\n");

fclose($f);
@chmod($file, 0755);

이렇게 변경하고 나면 해당 경로에 순수 html만 저장된 내역들이 들어가 있습니다. 위의 내용은 간단한 형식을 말씀드린것이고... 이런식으로 변경하여 출력하고자 하는 장소에 출력을 해줍니다.
다만, 이렇게 매 시간 매 분 파일을 만들어야 하는데.. 그부분은 리눅스의 crontab을 이용합니다. 분단위설정을 해서 일정시간 계속해서 해당 파일 덮어쓰기를 시킵니다.

다수의 회원이 페이지 접속했을때 각각 mysql에 부담주는것을 서버단에서 매단위시간마다 한번의 쿼리로 파일을 생성해주고 그 파일..html만 사용하게 하다는...

다시한번 말주변이 없어서;;; 죄송.. 어떻든 별도로 추가한 컨텐츠들 이렇게 해놓으면 효과는 좋습니다...ㅡㅡ;; 다만!! 게시글을 올리면 저같은 경우 길게는 1분여 뒤에 메인에 나오는 것이나 접속자 정보가 1분여 뒤에 표기되는 현상은 있지만 개인적으로 아주 만족합니다.

그리고, 오늘 가입자 같은것은... 회원 전체 데이타에서 매번 하시지 마시고... 가능하면 가입자를 별도 저장하는 테이블에 숫자만 기록해 놓는것이 좋습니다.  이것도 crontab을 이용해서 일정시간마다 전체 데이타에서 쿼리해서 숫자만 별도 저장을 하고 메인에 출력시 해당 숫자만 보여줍니다.

포털 형태 10여개 사이트를 한 서버에서 돌리고 일평균 mysql 2,537,399건 정도의 질의를 처리하고 있습니다. 이렇게 변경하기전엔 매일 오전 10시경 부터 저녁 11시까진 거의 웹페이지 하나 열려면 4~5초씩 기다려야 했고 mysql 메모리 사용량 이 시간대는 항상 90~100% 내외로 있었지만.지금은 쉽게 이동을 하는 편이구 0.1~4% 내외의 메모리를 이용합니다. 다만 접속자 많을때 회선이 딸릴 뿐이라는;;
suri 님의 글을 일고 보니, 굉장히 좋은 착안사항인 듯합니다.
보다 더 쉽게 시도해볼 수 있도록,
예제 파일이라도 하나 올려주시면 좋겠습니다만.
기대해도 될까요?
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT