Background Image

FORUM

조회 수 10901 추천 수 0 댓글 13
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

현재 CUBRID DB로 된 프로젝트에 DB 부하 테스트 중인데

약 5만건의 데이터 가 들어있는 테이블의 일반 단순쿼리 페이지(쿼리 2개 정도)에서

F5을 4초정도만 계속 누르고 있으면 ACTIVE_SESSION 이 48수치에 DB 다운되어 버립니다.

혹은 2초 정도 눌러도 20이상 올라가서 ACTIVE_SESSION 이  내려오지를 않습니다.

DB서버 메모리는 4M, 현재 비서비스중인 테스트 서버 입니다., DB close는 매 처리시 해주고 있습니다.

혹시 브로커 속성값이나., 메모리를 더 늘려야 되는 현상인지..

이것만으로 파악하기 힘드시겠지만....

더 필요하신 내용이 있으시면 알아봐 드리겠습니다.

참고로 broker 속성값은 디폴트에서 SESSION_TIMEOUT 값은 3000(기본값)도 했다가 지금 10값으로 되어 있습니다.

F5로 테스트 하는것은 비정상적인 방법인데 업체측에서 용납을 못하네요..

수고하세요

 

매니져 :

버전:2008 R2.2
빌드 번호:8.2.2.0261

 

서버 :

2008 R2.2(8.22.0261)

  • ?
    cubebridge 2010.07.26 19:45

    일단 F5를 이용한 테스트 방법은 비정상적이라 할 수 있습니다.


    그리고, active session이 48이라고 하시는 것은 cubrid broker status를 이용해서 확인하신 것인지요? 이를 통해 확인한 것의 status가 Busy로 계속 연결되어 있는 것을 말씀하신다면 단순 쿼리가 많은 결과 값을 가져오거나 성능이 떨어지는 상태일 수도 있습니다.


    cmd창에서의 cubrid broker status의 결과와 사용하신 쿼리 그리고 쿼리의 대상이 되는 테이블의 구조를 올려 주신다면 원인 파악에 도움이 될 것으로 보입니다. F5를 이용한 테스트의 경우 잘못된 쿼리(결과가 제대로 나오지 않는 것뿐 아니라 과도한 I/O작업을 일이키는)를 사용할 경우 장애의 원인이 될 수도 있습니다.

  • ?
    남재우 2010.07.27 08:31

    F5를 계속 누르고 있으면 서버로 굉장히 짧은 시간에 반복적으로 많은 요청이 들어오게 됩니다. 2초 정도에도 그 정도 상황이라면 서버에서 수행되는 웹페이지 소스, 데이터베이스로의 질의 등에 대하여 문제를 확인해 보시는 것이 좋습니다.

    앞서 말씀드린 것처럼 cubrid broker status 를 통하여 처리 상태를 보시고, BUSY인 상태가 많다면 질의의 수행 성능에 문제가 있을 수 있습니다.

  • ?
    안토니오 2010.07.28 01:17

    CREATE TABLE "test_art"(
    "art_no" integer NOT NULL,
    "user_no" integer NOT NULL,
    "art_kwd_no" integer,
    "art_isu_kwd_no" integer,
    "cat_no" integer NOT NULL,
    "cat_hash" character varying(1024) NOT NULL,
    "sort_no" integer DEFAULT 1 NOT NULL,
    "writer_name" character varying(1024),
    "writer_email" character varying(1024),
    "title" character varying(1024),
    "note" character varying(1024),
    "vote_no" integer,
    "part_cnt" integer,
    "attach_cnt" integer,
    "view_cnt" integer,
    "comment_cnt" integer,
    "title_photo" character varying(1024),
    "title_photo_shared" character(1),
    "title_photo_w" integer,
    "title_photo_h" integer,
    "status" character(1) DEFAULT '2' NOT NULL,
    "regdate" timestamp,
    "chgdate" timestamp,
    "pubdate" timestamp,
    "admin_note" character varying(1024),
    "edtor_note" character varying(1024),
    "to_writer" character varying(1024),
    "is_review" character(1),
    "is_headline" character(1),
    "banner_class_no" integer,
    "link_catno" integer,
    "url" character varying(1024),
    "media_title" character varying(1024),
    "news_title" character varying(1024),
    "fullbody" character varying(1073741823),
    "tags" character varying(1024) DEFAULT 'NULL',
    "subdate" timestamp,
    "sub_title" character varying(1024),
    "site_id" integer NOT NULL,
    "title_movie" character varying(2048),
    "title_movie_shared" character(1) DEFAULT '0',
    "head_title" character varying(1024),
    "head_body" character varying(4096),
    "art_kwd_no_arr" set_of(integer),
    "rejdate" timestamp,
    "related" character varying(1024),
    "mod_user_no" integer,
    "mod_writer_name" character varying(1024),
    "mod_writer_email" character varying(1024),
    "naver" integer DEFAULT 0,
    "yahoo" integer DEFAULT 0,
    "paran" integer DEFAULT 0,
    "nate" integer DEFAULT 0,
    "pub_dir" character varying(64),
    CONSTRAINT pk_mynews_art_site_id_art_no PRIMARY KEY("site_id","art_no")
    );
    CREATE  INDEX "ix_mynews_art_03_bestview" ON "mynews_art"("cat_no","status","pubdate");
    CREATE  INDEX "ix_mynews_art_04_review" ON "mynews_art"("art_no","status");
    CREATE  INDEX "ix_mynews_art_edit_list2" ON "mynews_art"("site_id","subdate" DESC,"status");
    CREATE  INDEX "ix_mynews_art_list_pubdate" ON "mynews_art"("site_id","pubdate" DESC,"status");

     

     

    select * from test_art where site_id=111 AND art_no=1000

    총 데이터는 4만건, 쿼리 수행후 DB 커넥트를 해제 햇습니다.

    ACTIVE_SESSION 수치는 CM의 상태모니터(Brokers Status)에서의 수치입니다.

    F5으로 6초 정도 누르니 다운되네요

    -----------------

    broker1의 속성입니다.
    수정된것만, SESSION_TIMEOUT 10, LONG_QUERTY_TIME 60, LONG_TRANSACTION_TIME 60
    입니다.

  • ?
    남재우 2010.07.28 02:41

    필드중 일부는 상당히 크기가 큰데요. 모든 질의에서 항상 바로보는 데이터가 아니라면 레코드를 분리하여 별도의 테이블로 가져가는 것이 좋습니다.

    6초 정도 눌려서 다운된다는 것이 서버가 다운된다는 의미인가요?  아니면 ie가 더이상 반응을 하지 않는다는 것인가요? 일단 서버쪽의 문제가 있다면 좀더 정보가 필요합니다.

    일단 cubrid broker status 을 보여주시고요, conf/cubrid_broker.conf 를 올려주시면 검토해 보도록 하겠습니다. 그리고 연결에 사용하는 포트도 알려주세요.


    실상 의미없는 테스트라는 것을 이미 잘알고 계시니... 그 테스트보다는 tps나 다른 성능 측정을 해보시는 것이 좋을 것 같습니다.


  • ?
    노랑배 2010.07.28 03:19

    요청하신 정보를 대신 올려드립니다.

     

    커맨드 상에서의 cubrid broker status 값은 프로세스가 49개이며 모두 BUSY 상태입니다.

    말씀하신 다운의 의미는 서버가 완전 다운되는 상황은 아닙니다.

    서버에 부하가 높은 경우나 DB접속이 안되는 경우입니다.

     

    conf/cubrid.conf 입니다.

     

    data_buffer_pages=250000

    sort_buffer_pages=100

    log_buffer_pages=3000

    이 외에 모든값은 기본값입니다.

     

  • ?
    남재우 2010.07.28 07:24

    cubrid broker status 의 결과를 올려주세요. 그리고 화일이 잘못되었네요. conf/cubrid_broker.conf 을 그대로 올려주세요.

  • ?
    노랑배 2010.07.28 22:14 SECRET

    "비밀글입니다."

  • ?
    남재우 2010.07.30 04:20

    질의가 무거워보입니다. 데이터 건수가 많다면 검색시 정렬로 인한 부하로 질의 성능이 느려지고 당연히 계속된 F5로 전체적인 성능이 느려질 수 밖에 없습니다.

    create index idx1 on mynews_art(site_id, pubdate desc), create index idx2 on mynews_cat_lnk(art_no,site_id) 정도의 인덱스가 필요해 보이며

    select /*+ ordered */ ... from .. where .. and rownum between 1 and 15 using index idx1(+), idx2(+) 와 같은 형태로 하여 인덱스를 이용한 정렬로 변경해 보기 바랍니다.

     

  • ?
    방문객 2010.08.06 02:22

    이슈를 보면서 간단히 의견을 적어 봅니다.

     

    1. 먼제 말씀하신 Active Session이 50 이하까지만 올라가는 것은 두 가지 설정을 참고해 보셔야 합니다.

    - cubrid.conf의 max_clients값이 50(디폴트)으로 되어 있을 것 같습니다.

      해당 데이터베이스에 동시에 접속할 수 있는 쓰레드 수를 정의하는 것으로 해당 응용과 시스템 환경에 따라 조정할 수 있습니다.

    - 해당 응용에서 사용하는 브로커의 최대 접속 가능한 값이 무엇인지 확인해 보셔야 합니다.

      기본적으로 브로커별로 max_num_appl_server의 값이 40으로 정의 되어 있습니다. (cubrid_broker.conf에서 보면 됨)

    - 이런 환경에서 웹 응용과 CM에서 동시에 접속한 서버 세션의 수가 최대값에 근접했다는 것을 의미하는 것으로 보면 될 것 같습니다.

      서버 내부적으로 사용하는 데몬 쓰레드도 있으니 이것도 감안하면 최대값까지 치고 올라갔다고 볼 수 있습니다.

     

    2. 성능 관련

    - 남재우님의 의견처럼 쿼리를 경량화 하고 메타 정보와 컨텐츠 정보를 분리하여 각각의 테이블로 유지하는 것이 좋겠다는 것에 동의합니다.

    - 더불어 위 시험과 같이 동일한 쿼리를 반복해서 수행하는 것은 아래 매뉴얼에 소개된 플랜캐시와 쿼리 캐시를 이용하면 좀 더 효율적일 것 같다는 생각이 듭니다.

      매뉴얼 참고 :  >  성능 튜닝  >  데이터베이스 서버 설정  >  쿼리 캐시 관련 파라미터

     

    도움이 되었길 바랍니다. ^_^

  • ?
    brightest 2010.08.06 21:20

    혹시 연결 상태를 유지시켜 주는 환경은 아닌지요?

    DBCP를 사용하거나 WAS같은 미들웨어 사용으로 connection pool을 유지하는 환경은 아닌가 해서요~.

     

    연결 상태를 유지하는 환경이라면 페이지 리프레시(F5 키)가 완료되었어도 ACTIVE_SESSION은 응용이 DB에 연결을 유지하고 있는 개수를 나타내는 것이므로 개수가 0이 되진 않을 것 같습니다.

  • ?
    brightest 2010.08.07 04:17

    ACTIVE_SESSION 관련하여 http://cafe.naver.com/studycubrid/663 에 글을 올렸으니 참고가 되셨으면 합니다~.

  • ?
    남재우 2010.08.07 21:27

    안녕하세요.

     

    많은 의견주신 두분께 감사드립니다....

     

    CUBRID 환경에서 동시 사용자수를 늘리기 위해서는 크게 2가지 설정이 필요합니다. 첫번째는 일단 CUBRID database 에서 받아들일 수 있는 연결의 개수이고, 두번째는 미들웨어인 CUBRID broker 단에서 받아들이는 연결의 개수입니다.

    이 두가지를 모두 조정해 주어야 동시사용자를 늘릴 수 있습니다. 물론 잘 아시겠지만 서버 리소스 문제도 있고, 또하나는 허용되는 접속자의 수를 늘린다고만 해서 성능이 좋아지지는 않습니다. 문제가 되는 질의, 업무로직 등에 대한 최적화가 우선이고 그 후 리소스 상태를 확인하여 접속자수를 늘려주어야 합니다.

    아울러 DBCP 등 풀링 문제는 현 CUBRID broker 의 기본설정으로도 문제없이 동작합니다. 다만 WAS 등에서 풀의 개수와 CUBRID 의 동시 사용자수는 같도록 조정해주셔야 합니다. 물론 접속은 30000번이 아닌 33000번을 이용하여 설정하기 바랍니다. 30000번은 CUBRID manager 의 질의편집기에서 사용하고 있으므로 이 쪽은 그냥 두시고 33000번으로 접속하도록 하기 바랍니다. 결국 CUBRID broker 로의 접속수는 응용에서의 접속(33000)수와 30000번의 기본 접속수인 40개를 합친 수 만큼 CUBRID 에서의 접속자수를 잡아주시면 됩니다.

    앞서 두분께서 답변해 주셨듯이 CUBRID 의 접속자수는 cubrid.conf max_client 의 값으로 조정되며, CUBRID broker 의 접속자수는 cubrid_broker.conf broker1 에 대하여 MAX_NUM_APPL_SERVER 의 수와 관련있습니다.

    마지막으로 플랜캐쉬는 기본적으로 설정되어있으며, 결과캐쉬는 검색위주의 시스템 즉, 데이터의 변경이 적은 데이터에 대하여 사용시에는 많은 효과를 얻을 수 있습니다.

  • ?
    샤롱스판 2010.09.02 21:27

    3.1매뉴얼에서 해당 부분 설명을 추가하였습니다. 감사합니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4272
716 다중복제에 대해 또 문의 드립니다~~ 3 샤키 2010.08.11 9650
715 Cannot connect to a broker 1 sjnoh 2010.08.10 27313
714 널포인트 익셉션 에러가 납니다 5 file 유니콘 2010.08.06 11322
713 cci로 다음 시리얼 값 얻기 1 하나엘 2010.08.05 9870
712 복제환경 구성후 문제. 8 노랑배 2010.08.04 9377
711 임시테이블에 대한 지원 계획은 있는지 궁금합니다 2 김종언 2010.07.28 10991
710 DATE 타입과 DATETIME 타입 3 ES 2010.07.28 12940
709 큐브리드 복제에 대해 문의... 1 샤키 2010.07.27 9598
708 큐브리드 로드시 에러 질문 1 ES 2010.07.27 9482
707 큐브리드 메니져로 데이터베이스를 백업하는방법을 자세하게 알려주세요 2 SoMa 2010.07.27 9533
706 2008 R2.2 x64 설치시 오류... 1 ~~ 2010.07.27 9794
» ACTIVE_SESSION 이 48수치에 DB 다운되어 버립니다. 13 안토니오 2010.07.25 10901
704 브로커의 sql로그 분석하면 File(log_top.q) open error 라고 뜹니다. 4 안토니오 2010.07.24 9953
703 다음과 같은 에러로인해 db실행이 않됩니다. 1 file SoMa 2010.07.24 9685
702 필드 크기 변경 계획에 대한 질문 1 유니콘 2010.07.23 9901
701 부팅시 [데이터베이스 서버 가동] 자동으로 되는 방법 3 까망이 2010.07.22 10283
700 큐브리드2008 R3 버전 라이선스에 관한 문의 3 인간을자유롭게 2010.07.21 9281
699 OLE DB에서 자바 저장프로시져 사용 1 secret shadow54 2010.07.20 8
698 OLE DB에서 자바 저장프로시져 사용 1 secret shadow54 2010.07.19 8
697 demodb 암호를 모르겠네요-ㅅ-;; 2 세이브 2010.07.16 13856
Board Pagination Prev 1 ... 159 160 161 162 163 164 165 166 167 168 ... 199 Next
/ 199

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales