2개월에 걸친 격투 끝에 RDS 접속 상한선 주위의 병목을 해결하였다
3737 단어 SecurityGroupAWS
더 잘한 것 같아서 반성하고 공유하기 위해 썼어요.
무슨 일이 있었는지 (시간순으로)
어느 날 방문자 수의 도표지만 멋지게 한계에 이르렀다.
그동안 당연히 응답이 느려졌지.
이 액세스 수는 다음 구성의 경로에 있는 ALB에 대한 액세스 수의 값입니다.
CloudFront => ALB => ECS Fargate(web) => RDS
=> NLB => EC2(cache) => s3
※ ECS부터 DB의 정보에 따라 NLB에 HTTP를 요청합니다.우리는 다음과 같은 조사를 했다
max_connection 미달, 효과기 포트 상한선 미달
패킷drop도 없고 부하가 높을 때 재현되기 때문에 네트워크가 원활하지 않은 것도 아니다
somax 같은 건 확인해도 돼요.
꽉 차다
어쩔 수 없어서 RDS의 실례 유형을 줬어요.
!!!!
안 붙였어, 했어!
무슨 일이야?
결론, 실례 유형을 높여라!완성
어쨌든 이것은 될 수 있는 문제였지만 결국 AWS 지지 씨의 대답은 사실을 증명했다.
결과적으로 RDS의 Security Group 설정이 잘못되었습니다.
연결을 제어하기 위해 Security Group이 실행했습니다연결 추적.
각 연결을 추적하기 위해 AWS 측은 상태를 유지합니다.
그리고 이 연결 추적 상태는 이 상태수에 상한선이 존재한다고 한다.
그리고 모든 실례 유형의 상한선은 변화한다.
이번에 유형이 바뀌어 문제가 완화되었다.
몰라요.
기술 솔루션
이번에는 유형을 바꾸어 해결했지만 필요하지 않은 자원과 원가가 필요하기 때문에 결과적인 해결일 뿐이라고 생각합니다.
기본적인 기술 해결 방법은 몇 가지가 있는데, 여기에 두 가지를 열거한다.
우선 속도조절기 방화벽 대책이다.
연결 추적이지만 0.0.0.0/0 등 조건에서 무조건 접근하면 연결이 추적되지 않습니다.
따라서 상한선에 이르지 않는다.
가바가바라고 하지만 IAM 인증과 MySQL의 인증 기능을 이용하면 문제가 없습니다.
다음은 연못 연결 대책이다.
연결을 끊거나 끊지 않으면 추적 상태는 하나입니다.
따라서 연결 탱크를 사용하면 문제가 발생하지 않는다.
작성하지 않았지만 ECS에서 RDS로 연결할 때마다 질의를 수행합니다.
HTTP2라도 연결은 계속 당겨야 합니다.
매번 연결되는 연결이 끊기는 것이 고비용 위험이 높은 곳입니까?
또 DB를 다이나모 DB로 만들고 DB의 대수를 늘리는 등 다양한 방법이 있다.
반성하다
문서에 상한선이 명확하게 적혀 있지 않기 때문에
일부러 그런 건 아닌 것 같아요.
제가 더 빨리 해결할 수 있을 것 같아요.
총결산
이번 일은 분명하게 적혀 있지만 약 2개월간의 조사 끝에 해결된 현상이다.
사용자 여러분께 오랫동안 불편을 끼치지 않은 것에 대해 죄송합니다.
AWS의 성원에 감사드립니다.
기초적으로 문제가 있느냐고 물었을 때 현상이 판명되지 않은 것을 감안하면 상당히 보기 드문 상황을 인용한 것 같다.
나는 더 잘 해결하기 위해 더욱 정교해지고 싶다.
(뭔가 없애는 건 멋있지만 테킬라주에 대응하면 잘 풀리고 왠지 기술자의 슬픈 해결인 것 같다.)
Reference
이 문제에 관하여(2개월에 걸친 격투 끝에 RDS 접속 상한선 주위의 병목을 해결하였다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fullsat_/items/a1f6153af41450ba54c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)