반응형
SQL 연금술 로드 테스트: "Timeout Error:크기 3 오버플로우 0의 QueuePool 제한에 도달했으며 연결 시간 초과, 시간 초과 30"
AWS에서 실행되는 SQL-Alchemy 기반 웹 애플리케이션을 가지고 있습니다.
이 웹 앱에는 여러 개가 있습니다.c3.2xlarge
ELB의 배후에 있는EC2 인스턴스(각 8 CPU)는 Web 요구를 받아들여 공유 데이터베이스에 쿼리/기입합니다.
사용 중인 데이터베이스는 다음과 같은 유형의 RDS 인스턴스입니다.db.m4.4xlarge
MariaDB 10.0.17을 실행하고 있다.
SQL 연금술 설정은 다음과 같습니다.
SQLALCHEMY_POOL_SIZE = 3
SQLALCHEMY_MAX_OVERFLOW = 0
부하가 높은 상태에서는, 애플리케이션이 다음의 에러를 발생시키기 시작합니다.
TimeoutError: QueuePool limit of size 3 overflow 0 reached, connection timed out, timeout 30
SQLALCHEMY_POOL_SIZE를 3에서 20으로 늘리면 동일한 부하 테스트에서 오류가 사라집니다.다음은 질문입니다.
- DB에서 처리할 수 있는 동시 연결 수는 총 몇 개입니까?
- 라고 가정하는 것이 타당한가?
Number of Number of EC2 instances * Number of Cores Per instance * SQLALCHEMY_POOL_SIZE
질문 #1에 대한 답을 초과할 수 없습니다. - 저와 같은 분산 웹 앱의 DB 연결 풀 크기에 대한 다른 제약 사항을 알아야 합니까?
MySQL은 거의 모든 수의 동시 연결을 처리할 수 있습니다.그러나 수십 개 이상의 쿼리가 활성화되어 있는 경우 문제가 발생할 수 있습니다.
쿼리가 무엇을 하고 있는지 모르면 3이 제한인지 300인지 알 수 없습니다.
slowlog를 켜서 어떤 쿼리가 가장 중요한지에 대한 정보를 수집할 것을 권장합니다.잘 조정된 웹 앱은 3개의 연결로 99%의 시간 동안 쉽게 살아남을 수 있습니다.
나머지 1%는 스파이크가 발생할 수 있습니다.그렇기 때문에 3은 불합리하게 낮다.
언급URL : https://stackoverflow.com/questions/38515488/load-testing-sql-alchemy-timeouterror-queuepool-limit-of-size-3-overflow-0-re
반응형
'sourcecode' 카테고리의 다른 글
XAMPP에서 MariaDB를 MySQL로 변경하려면 어떻게 해야 하나요? (0) | 2023.01.15 |
---|---|
날짜 및 시각에서 DATETIME 생성 (0) | 2023.01.15 |
PHP에서 요청 헤더를 읽는 방법 (0) | 2023.01.15 |
교육 후 모델을 저장/복원하는 방법 (0) | 2023.01.10 |
subprocess.call()의 출력을 취득하고 있습니다. (0) | 2023.01.10 |