중급규모의 커뮤니티 - 접속속도가 느릴때 > 그누4 팁자료실

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

중급규모의 커뮤니티 - 접속속도가 느릴때 정보

중급규모의 커뮤니티 - 접속속도가 느릴때

본문

그누보드가 워낙 다양한 기능을 가지고 있다보니 회원정보를 자주 사용하게 되는 커뮤니티사이트에서는 상당히 버벅대더군요.
2000명정도밖에 안들어오는데 DB접속에러가 수시로 뜨고...

불당님의 튜닝방법도 사용해보았지만...
원인은 단 하나였던거 같습니다.

'글 목록이 많은 게시판을 메인페이지에서 최신글 불러오는것' -> 이것이 문제였습다.
공지사항같은 글 갯수가 몇백개 안되는 게시판의 최신글은 잘 되는데 그룹으로 불러온다거나 글이 최소1만개 이상의 게시판의 최신글을 메인에 띄우면 사이트가 느려지는 것을 피부로 느낍니다.

할수없이 공지와 썸네일만으로 메인을 초간단화 시킨후 커뮤니티를 운영하고 있습니다.

지금은 날아다닙니다.

참고로 회원수는 8만명입니다. 하루 방문객수 2500명 내외
회원이 3만명 이하였을때는 하루 5천명정도 방문객일때 버벅대며 DB접속에러나더니 회원이 늘어나니 하루방문객이 줄어도 부하가 심하더군요.

중형이상의 커뮤니티를 운영하려면 돈많이 들여서 서버 빵빵하게 해야 것네요
추천
1

댓글 15개

저도 몇만건이 되는 게시판의 최신글을 side area에 띄우고 방문자도 훨 많지만
무리없이 잘 되는데요??? 서버를 최강으로 바꾼 것도 있지만 프로그램의 영향이
생각보다 많이 큽니다. 그누의 원본으로는 초급 이상의 커뮤니티는 무리죠.
서버의 메모리가 512라서 그런가...

IDC에 5년째 넣어둔건데... 쩝.
이젠 업그레이드도 생각해야 겠습니다...흐

방문객이 늘어나도 걱정입니다.^^
서버 메모리의 문제는 아닐꺼에요.

하루 페이지뷰가 어느정도 있지 모르겠지만 100만을 넘었다면 시스템의 h/w가 감내하기
어려운 수준일 수도 있습니다. 시스템의 버스가 좋을 것으로 바꾸셔야 합니다.

태사랑은 제가 튜닝을 했는데, kt의 웹호스팅으로 동접 300명에도 속도가 그렇게 안떨어 집니다.
http://cafe3.ktdom.com/thailove/gb/

나중에 심각하게 버벅거릴때 알려주세요. 제가 원인을 봐드리죠.
저도

'글 목록이 많은 게시판을 메인페이지에서 최신글 불러오는것'

때문에 최신글 스킨을 거의 못쓰고있습니다..ㅠㅠ 이미지 게시판 불러오는거면
아예 메인이 뜨지도 못할정도예요 ㅠㅠ
latest.lib.php에서 사용하는 query문에 인덱스를 안 탔던 것으로 기억합니다.
    $sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_num limit 0, $rows ";

mysql> show index from g4_write_abc;
+---------------+------------+---------------------+--------------
| Table        | Non_unique | Key_name            | Seq_in_index | Column_name  | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+---------------+------------+---------------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+
| g4_write_post |          0 | PRIMARY            |            1 | wr_id        |
| g4_write_post |          1 | wr_num_reply_parent |            1 | wr_num       
| g4_write_post |          1 | wr_num_reply_parent |            2 | wr_reply      |
| g4_write_post |          1 | wr_num_reply_parent |            3 | wr_parent    |
| g4_write_post |          1 | wr_is_comment      |            1 | wr_is_comment |
| g4_write_post |          1 | wr_is_comment      |            2 | wr_id        |
+---------------+------------+---------------------+--------------+--
6 rows in set (0.00 sec)

인덱스를 보시면, latest.lib.php의 sql은 wr_is_comment와 wr_num을 사용하는데
이렇게 구성된 인덱스가 없습니다.
oder by wr_num을 wr_id로 바꾸시면 빨라질 겁니다.
엑스엠엘님, 그누 코드를 살펴보면

//$sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
    // 위의 코드 보다 속도가 빠름
    $sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_num limit 0, $rows ";

이렇게 되어있는데요, 주석처리된 코드로 돌리라는 얘기로 들리는데 왜 이렇게 해놓았을가요?

궁금합니다~
아마도 이게 답일 거 같습니다.
$sql = " select * from $tmp_write_table where wr_is_comment = 0  and wr_id > 0 order by wr_id desc limit 0, $rows ";

보통은 wr_is_comment = 0인 where조건과
order by wr_id가 있으면 인덱스를 탈 것이라고 예상하지만
optimizer가 좀 멍청해서 모릅니다.
그래서
wr_id>0 조건을 주면 그제야 이 인덱스다"라고 알죠.

더 확실하게 하려면 hit를 사용하세요.

항상 explain을 해 보세요.
순수그누 버전에서는 "0 order by wr_num limit 0, $rows "와 같이 고쳤을 시에는 이미지를 불러 오지 못하는 현상이 있을 수 있습니다.  지나가다 초보님들 혼동이 있을 부분이라 채크하고 갑니다.

사실 제가 올리는 시점에서의 그누4버전들은 위의 팁이 모두 맞게 적용되어져 있으니 별다른 튀닝을 하지 마세요.  고치시다보면 원점일 내용입니다.
하악... 활용팁이라고 올렸는데... 오히려 도움을 받네요^^

그런데 너무 어렵네요^^

예전에 제로보드 초기버전때는 하루 7만명도 잘 돌아갔는데 ... 요즘은 설치형 보드들도 워낙 복잡해져서 하루 1만명은 웬만한 서버로는 꿈도 못꿀듯 합니다.

불당님 말씀처럼 서버의 문제만이 아니라 튜닝을 잘하면 되는데... 그것도 실력이 있어야지요. ㅋ
거의 php를 어깨너머로 배운지라... 어려운 말은 못알아 듣는 답니다.
전체 3 |RSS

회원로그인

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