Galera 클러스터에서는 놀라울 정도로 낮은 퍼포먼스
목표는 엔드 투 엔드 스택이 더 많은 TPS를 지원할 수 있도록 galera 클러스터에 있는 두 노드의 CPU 리소스를 충분히 활용하는 것입니다.현재 풀스택은 36vcpu의 단일 mariadb 서버에 의해 제한되며 10,000TPS에 도달할 수 있습니다.
Galera 클러스터에서 2노드의 DB를 사용하여 약 2만 TPS를 지원하고 싶다(1은 약 10000 TPS를 지원할 수 있다.이것은 CPU에 의해 제약되었다).현시점에서는 스플릿 브레인 및 기타 복제 시나리오나 경계선 시나리오에는 관심이 없습니다.처음에 HA 프록시 로드 밸런서를 사용하여 갤라에서 노드 2개를 사용하여 테스트했지만 결과가 매우 좋지 않았습니다(3500TPS만 해당).나는 갤러라로는 할 수 없는 것을 성취하려고 하는 것인가?관전 포인트 좀 주세요.
응용 프로그램이 하나의 노드에서 10,000TPS 제한을 초과하기 위해 DB를 클러스터링할 수 있는 다른 메커니즘이 있습니까?
각 트랜잭션(Galera 단위)은 다음과 같이 해야 합니다.COMMIT
다른 모든 노드에 문의하여 트랜잭션이 어디에서나 동작하는지 확인합니다.최종적으로 이러한 노드가 트랜잭션을 수행해야 합니다.많은 요인에 따라 이 작업은 원래 노드의 작업보다 크게 줄어들 수도 있고 줄어들 수도 있습니다.
모든 복제 형식은 마스터에서 발생한 '쓰기'를 슬레이브에서 반복하는 것입니다.슬레이브의 노력을 최소화하는 것이 요령입니다. 하지만 이것은 부분적으로만 가능합니다.
스탠드아론 서버의 트랜잭션 수가 최대 10,000에 달할 경우, 레플리케이션 셋업은 2개의 노드에서 20,000을 실행할 수 없습니다.3개 이상의 노드로 20K를 얻을 수 있습니다.
Galera는 4-5개의 노드에서 최고점을 찍는 것 같습니다.즉, 동기화가 어려워져 스케일링이 제한됩니다.
Oracle의 "InnoDB Cluster"는 5개 노드를 넘어설 가능성이 높은 것으로 보입니다.현재 5.7 및 8.0에서 어느 정도 사용할 수 있습니다.
NDB 클러스터는 "이벤트 일관성"에 의존합니다.이는 Galera 또는 InnoDB 클러스터의 "비동기"(일반 복제), "반동기" 또는 "동기"와는 매우 다른 모델입니다.NDB는 트랜잭션이 서로 경합하지 않거나 적어도 다른 노드로부터의 경합이 없는 경우에 유효합니다.
10K 이상을 달성한 실험이 있습니다.이거 먹어봐.
의 '에 대해 설명하십시오. 하기 위한 다른 수 거래'에 대해 설명해 주십시오.실적을 개선하기 위한 다른 방법이 있을 수 있습니다.를 들어 1개의 '1'이 .INSERT
의 100줄보다 .INSERTs
효과의 부분; CPU 절감 효과
언급URL : https://stackoverflow.com/questions/41721367/alarmingly-low-performance-with-galera-cluster
'sourcecode' 카테고리의 다른 글
MySQL에서 변수를 선언하는 방법 (0) | 2022.09.23 |
---|---|
MariaDB 구문 오류 없이 치환하는 방법 (0) | 2022.09.22 |
MySQL에서 테이블 이름이 변수인 경우 선택하는 방법 (0) | 2022.09.22 |
String.replace모든 단일 백슬래시를 이중 백슬래시로 바꿉니다. (0) | 2022.09.22 |
여러 파일에 걸쳐 구성된 Python 클래스를 사용할 수 있습니까? (0) | 2022.09.22 |