[G5] 소셜로그인 회원가입시 SELECT 쿼리 과부하 현상 (그누보드 5.4.5.2 패치) > 기술자료 | 해피정닷컴

[G5] 소셜로그인 회원가입시 SELECT 쿼리 과부하 현상 (그누보드 5.4.5.2 패치) > 기술자료

본문 바로가기

사이트 내 전체검색

[G5] 소셜로그인 회원가입시 SELECT 쿼리 과부하 현상 (그누보드 5.4.5.2 패치) > 기술자료

그누보드 [G5] 소셜로그인 회원가입시 SELECT 쿼리 과부하 현상 (그누보드 5.4.5.2 패치)

페이지 정보


본문

AWS 관리해주는 업체에서 아래와 같은 레포팅을 받았습니다

최근들어 RDS CPU 알람이 많이 발생합니다
추측이 되는 부분에 대하여 말씀드리겠습니다


SELECT COUNT (*) AS `cnt` FROM `g5_member` where `mb_nick` = ? AND `mb_id` != ''

select count(*) as cnt from g5_member where mb_nick = '46' and mb_id <> ''
select count(*) as cnt from g5_member where mb_nick = '209' and mb_id <> ''
select count(*) as cnt from g5_member where mb_nick = '113' and mb_id <> ''
select count(*) as cnt from g5_member where mb_nick = '114' and mb_id <> ''
숫자만 바꾸어서 1초에 몇개의 쿼리가 지속적으로 발생하고 있습니다

이것을 유추해보면 아래의 함수가 작동하는 것으로 판단되며,
소셜로그인(네이버, 다음)에서 계속 쿼리를 요청하고 있습니다

plugin / social / includes / functions.php  1007~1018줄 내용
function exist_mb_nick_recursive($mb_nick){
    static $count = 0;

    $mb_nick_add = ($count > 0) ? $mb_nick.(string)$count : $mb_nick;

    if( ! exist_mb_nick($mb_nick_add, '') ){
        return $mb_nick_add;
    }
    
    $count++;
    return exist_mb_nick_recursive($mb_nick);
}

lib / register.lib.php  76~84줄 내용
function exist_mb_nick($reg_mb_nick, $reg_mb_id)
{
    global $g5;
    $row = sql_fetch(" select count(*) as cnt from {$g5['member_table']} where mb_nick = '$reg_mb_nick' and mb_id <> '$reg_mb_id' ");
    if ($row['cnt'])
        return "이미 존재하는 닉네임입니다.";
    else
        return "";
}





소스를 확인해보니 소셜로그인에서 닉네임이 넘어오지 않는 경우 회원 테이블에서 닉네임을 0 부터 순차적으로 조회를 반복하는 과정이 발생한 것이 었습니다
소셜 회원수가 적은 경우는 별 영향이 없겠으나, 위 사이트는 소셜회원만 수천명이 활동중인 중규모 이상의 서비스 사이트라서 cont 가 0 부터 2000번 이상까지 조회를 반복하는 것이 원인이었습니다

SIR 버그레포트를 제출했으면 차후 버전에서는 수정하겠다고 합니다.
그누보드  5.4.5.1 ( 2021-02-05 배포) 버전까지는 이것에 대한 수정이 필요합니다

2021-03-17 그누보드 5.4.5.2 수정패치 등록 ( https://sir.kr/g5_pds/5687 )





plugin / social / includes / functions.php

function exist_mb_nick_recursive($mb_nick){
    static $count = 0;

    $mb_nick_add = ($count > 0) ? $mb_nick.(string)$count : $mb_nick;


를 아래와 같이 변경합니다


function exist_mb_nick_recursive($mb_nick){
    global $mb_id;
    static $count = 0;

    //$mb_nick_add = ($count > 0) ? $mb_nick.(string)$count : $mb_nick;
    $mb_nick_add = ($count > 0) ? str_replace('_','',$mb_id).substr(md5(microtime()), 0, 3).(string)$count : $mb_nick;

댓글목록

등록된 댓글이 없습니다.


Total 459건 2 페이지
  • RSS
기술자료 목록
439
그누보드   5033  2021-10-08 17:20 ~ 2021-10-21 15:24  
438
그누보드   5247  2021-10-08 14:45 ~ 2021-10-08 16:11  
437
그누보드   6337  2021-10-08 07:41 ~ 2021-10-14 10:40  
436
그누보드   4864  2021-09-02 12:15 ~ 2021-09-02 15:15  
435
그누보드   4807  2021-08-31 18:52  
434
그누보드   5138  2021-08-01 20:59 ~ 2021-08-02 09:19  
433
그누보드   6892  2021-07-27 14:45 ~ 2021-08-05 18:06  
432
그누보드   5714  2021-06-30 07:32 ~ 2021-06-30 07:50  
431
그누보드   7456  2021-06-11 09:19 ~ 2021-06-11 09:20  
430
그누보드   6326  2021-06-03 16:20 ~ 2021-06-06 14:56  
429
그누보드   5693  2021-05-26 11:53 ~ 2021-05-27 08:49  
428
그누보드   8043  2021-05-18 13:48 ~ 2021-07-22 12:24  
427
그누보드   5414  2021-04-21 17:55 ~ 2021-06-15 18:19  
열람
그누보드   4645  2021-02-25 22:28 ~ 2021-03-17 11:33  
425
그누보드   6202  2021-02-18 10:28 ~ 2021-02-18 14:10  
424
그누보드   6605  2021-02-08 14:43 ~ 2021-02-08 16:31  
423
그누보드   7750  2020-12-14 18:09 ~ 2023-04-04 11:18  
422
그누보드   6471  2020-12-07 15:15 ~ 2022-12-17 21:15  
421
그누보드   4632  2020-10-19 06:39 ~ 2022-02-01 09:57  
420
그누보드   4413  2020-10-16 17:08 ~ 2020-10-20 00:43  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.