Background Image

FORUM

PCH
조회 수 62 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

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


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Rocky Linux 8.10
CUBRID Ver.
CUBRID 11.4 (11.4.1.1787-8d83685) (64bit release build for Linux)
CUBRID TOOL Ver.
11.4
응용 환경(API)
Springboot, jdbc


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
 

물리적인 서버 2대를 HA 구성하였습니다. 

그리고 해당 서버에 각각 브로커를 3개 query_editor / broker1(RW) / broker2(RO) 구성하였습니다. (총 6개)

 ※ 첨부파일 참조

 

jdbc 접속 시 URL을 아래와 같이 합니다.

jdbc:CUBRID:DB1_broker1_아이피:33000:DB명:::?altHosts=DB2_broker1_아이피:33000

위 설정으로는 논리상 결국 DB1번에 접속장애가 생겨야 DB2로 접속을 하게 될 것이고 RO브로커는 사용하지 않을 것으로 예상됩니다.

 

그렇다면 부하분산 관점에서 loadBalance=true 옵션을 주었을 때 데이터 동기화에는 문제가 없을까요?

그리고 RO 브로커를 응용환경에서 수정없이 DBMS 자체적으로 라우팅하는 방법이 없을까요?

 

  • ?
    큐브리드_김주현 2026.01.14 16:22
    안녕하세요. 큐브리드를 이용해 주셔서 감사합니다.

    1. RO사용이슈
    "jdbc:CUBRID:DB1_broker1_아이피:33000:DB명:::?altHosts=DB2_broker1_아이피:33000
    위 설정으로는 논리상 결국 DB1번에 접속장애가 생겨야 DB2로 접속을 하게 될 것이고 RO브로커는 사용하지 않을 것으로 예상됩니다."
    ==> 작성자님의 예상이 맞습니다.

    2. loadBalance
    "부하분산 관점에서 loadBalance=true 옵션을 주었을 때 데이터 동기화에는 문제가 없을까요?"
    ==> 동기화에는 문제 없습니다. 클라이언트 요청에 특정 서버에 집중되지 않도록 분산하는 옵션으로 데이터동기화 에는 문제가 없습니다.

    * 설정값
    false: 해당 속성이 적용하지 않는다.
    true 또는 rr: 지정한 호스트들을 Round-Robin 방식으로 연결한다.
    sh: 지정한 호스트들을 무작위(Shuffle) 방식으로 연결한다.

    3. DBMS자체적으로 라우팅 가눙여부
    "그리고 RO 브로커를 응용환경에서 수정없이 DBMS 자체적으로 라우팅하는 방법이 없을까요?"

    API수정없이 Read분산을 자체적으로 하는 기능은 제공 되고 있지 못하고 있습니다.
    2026년 11.5 버전에 해당 기능 추가를 목표로 하고 있습니다.

    그래서 일반저그올 기술가이드로 JDBC connection을 "쓰기용"과 "읽기용"으로 선언하여 이를 구별하여 connection을 사용하도록 권고 하고 있습니다.
    예제)
    [Write]
    Master:33000?altHosts=Slave:33000&rcTime=300&loadBalance=true

    [Read]
    Master:34000?altHosts=Slave:34000,Replica1:34000,Replica2:34000&rcTime=300&loadBalance=true

    API수정없이 DBMS자제적으로 처리할 수 있는 방안을 제공 드리면 좋겠으나 최신 release버전에서 제공드리지 못한점 양해 바랍니다.

    그러나 우려하신 것과 같은 데이터 동기화 오류는 발생한 적이 없으니 안심하고 사용하셔도 무방합니다.

    감사합니다.
  • ?
    PCH 2026.01.15 10:14
    서버자원(CPU, 메모리, 디스크, 네트워크)에 대한 부하 설정 값 가이드라인이 있나요?
    ex) 4core 16G SSD500G 100MB/s 자원에 대해 cubrid.conf > max_client = 2000이하, cubrid_broker.conf > MAX_NUM_APPL_SERVER = 1000
  • ?
    큐브리드_김주현 2026.01.15 15:32

    CUBRID는 “서버 자원(CPU/메모리/디스크/네트워크) 스펙 → 특정 설정값(예: max_clients=2000 이하, MAX_NUM_APPL_SERVER=1000)”처럼 정해진 1:1 매핑 가이드를 제공하고 있지 않습니다.

    대신 동시 접속(=Connection Pool/요청 동시성)과 워크로드(쿼리당 CPU 비용)를 기준으로 파라미터를 산정하고, 그 값이 OS자원의 한계를 넘지 않도록 조정하는 방식으로 가이드 하고 있습니다.

    1) cubrid.conf > max_clients
    - DB 서버가 동시에 허용하는 “클라이언트(일반적으로 CAS)”의 최대 연결 수를 의미합니다. 기본값 100.
    - 동시 사용자 수를 늘릴 때 MAX_NUM_APPL_SERVER와 함께 적절히 조정해줘야 하는 값입니다.
    - 무작정 크게 잡는 경우 무의미한 메모리/리소스 사용이 될 수 있습니다.
    - “4코어인데 CAS 1000” 같은 설정은 일반적인 OLTP에서 과할 수 있습니다.
    - 따라서 “동시 접속자가 많을 것 같으니 max_clients를 크게 잡자”는 과한 설정일 수 있습니다. 대신 실제 커넥션 풀 상한 + 여유분 정도로 관리하는 것이 효율적입니다.

    2) cubrid_broker.conf > MAX_NUM_APPL_SERVER
    - 브로커가 허용하는 CAS 프로세스(애플리케이션 서버)의 최대 개수입니다.
    - CAS가 부족하면 MAX_NUM_APPL_SERVER를 늘리고, 그에 맞춰 max_clients 증가도 고려

    3) 산정식
    - max_clients ≈ (모든 브로커의 MAX_NUM_APPL_SERVER 합) + 10
    - 10은 single인 경우이고, HA 환경이면 “같은 DB에 붙는 모든 브로커 노드 합”을 고려하여 산정하시면 되겠습니다.

    4) 디스크(IOPS/Throughput)
    - 디스크가 느린 환경에서 CAS를 늘리면, 병렬 I/O 대기가 늘어 잠금/대기/슬로우쿼리가 확산될 수 있습니다.
    - DBMS설치 환경은 NAS보다는 SAN을 권고하고 있습니다.
    - 이런 경우는 CAS 수를 늘리기보다 쿼리 튜닝, 인덱스조정, 통계갱신, 버퍼관련 파라미터 값 조정 과 같은 접근이 먼저입니다.

    5) 네트워크
    - 네트워크(대역폭/지연)는 “접속 수”보다 **왕복 지연 + 패킷량(결과셋 크기)**에 더 민감합니다. 큰 결과셋/빈번한 호출이면 CAS를 늘려도 해결이 안 되는 경우가 있습니다.



    제안 드리는 방안1)
    - 중요한 건 “접속자 수”가 아니라 동시에 DB에 쿼리를 날리는 요청의 상한입니다.
    - WAS의 pool MAX를 “서버가 감당 가능한 동시 DB요청 수”로 제한하고, CUBRID는 그 범위에서 안정적으로 처리하도록 맞추는 방식이 운영 안정성이 높습니다.

    제안 드리는 방안2)
    - 최적의 상태를 찾아야 합니다.
    - MAX_NUM_APPL_SERVER를 50 → 100 → 150… 식으로 올리면서 TPS/응답시간/broker의 상태(CAS처리상태 모니터링)/iowait/lock/slow-query등에 따라 "성능이 더 이상 좋아지지 않는 지점"를 찾는 것이 중요합니다.
    - 사이트 Open전 부하/성능 테스트를 필히 해야 하는 이유 중 하나입니다.

    아무쪼록 조금이라도 도움이 되셨기를 바랍니다.
    감사합니다.

  • ?
    PCH 2026.01.17 15:35
    현재 자원의 초기 권장 설정이 있을까요? 자원 사용에 대한 매커니즘을 모르겠어서 최적화하는게 어렵네요

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 22 admin 2024.04.23 147263
4258 restoredb 이후 오류발생 3 file PCH 2026.01.27 41
4257 cubrid 11.4에서 Stored Function 생성 이후 함수 내부에서 다른 함수 호출시 위치에 따라 "Stored procedure execute error" 오류가 출력 되는 문제 1 두목원슝 2026.01.27 15
4256 Django + python환경에서 orm 지원 문의 1 스에트치 2026.01.22 53
4255 odbc / jdbc 환경에서 현재 세션의 isolation level 확인방법 4 jhlee 2026.01.21 47
4254 큐브리드 사용자(스키마) 계정에 대한 비밀번호 정책을 추가 1 PCH 2026.01.20 43
» 브로커 이중화 관련 문의드립니다. 4 file PCH 2026.01.14 62
4252 HA 구성에 독립된 DB 추가하는 방법 문의드립니다. 1 깐수 2026.01.08 71
4251 CUBRID DB 9에서 11버전으로 업그레이드 연계 JDBC 변경 문의 1 MiniMaster 2025.12.23 128
4250 큐브리드 설치 시 로그 위치 변경 문의 1 강인함 2025.12.22 118
4249 unloaddb 후 loaddb 시 오류 5 file PCH 2025.12.15 190
4248 JDBC에서 SEQUENCE OF 타입의 컬럼 값을 조회하는 방법 문의 1 새옹지마 2025.12.11 247
4247 DB 운영중 LOCK 관련 이슈가 있어 문의 드립니다. 4 file 용원아빠 2025.12.11 261
4246 spring boot 3.5.8 + cubrid 11.4 JPA설정 문의 2 뵤라 2025.12.10 260
4245 slow.log 파일에서 'server execution statistics' 출력 조건이 궁금합니다. 5 file ogu 2025.12.02 363
4244 Cubrid 11.4의 컬럼명과 도움말의 컬럼명이 다릅니다. 1 엘L 2025.11.28 371
4243 CUBRIDException: The argument is invalid. 3 큐피 2025.11.17 662
4242 CUBRIDException: POSIX external storage error: /ces_029... Permission denied 4 큐피 2025.11.10 490
4241 캐릭터셋 변경 질문드립니다. 1 file 엘L 2025.10.29 417
4240 특정 사용자 ID 에 대한 에러 문의 1 헤이선 2025.10.28 582
4239 [긴급] DB 조회 문의 1 헤이선 2025.10.23 703
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 213 Next
/ 213

Contact Cubrid

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