4

beanstalk를 사용하여 확장 가능한 배경 이미지 처리를 설정하려고합니다. 내 설정은 다음과 같다 :Elastic Beanstalk에서 자동 배칭 배치 작업

  • 응용 프로그램 서버 (탄성 콩 줄기에서 실행이), 파일을 수신 S3에 그것을두고 SQS를 위에 그것을 처리하는 요청을 보냅니다.
  • Worker 서버 (Elastic Beanstalk에서 실행 중임)는 SQS 대기열을 폴링하고 요청을 받아 S3에서 원본 이미지를로드 한 다음 처리하여 10 가지 다른 변형을 생성 한 다음 S3에 다시 저장합니다.
  • 이러한 업로드 이벤트는 예측할 수없는 시간에 하루에 약 1-2 회, 일괄 처리 당 20-40 회의 비율로 발생합니다.

문제 : 현재 작업자에게 하나의 마이크로 인스턴스를 사용하고 있습니다. 그림의 한 변형을 생성하는 데는 3 초에서 25-30 초가 걸릴 수 있습니다 (처음에는 3 초가 걸리는 것처럼 보이지만 마이크로 인스턴스가 느려지는 경우 2 초의 버스트 워크로드 디자인이라고 생각합니다). 어쨌든, 30 장의 그림을 업로드하면 30 개의 사진 * 10 개의 변형이 각각 30 초 = 2.5 시간 처리됩니다.

분명히 이것은 받아 들일 수없는 것이고, 나는 "작은"인스턴스를 사용해 보았는데, 성능은 변하지 않았지만 변형 당 약 5 초 였으므로 배치 당 30 * 10 * 5 = 26 분이 남았습니다. 아직도 받아 들일 수 없다.

이 문제를 공격하는 가장 빠른 방법은 가장 빠른 결과를 얻고 동시에 가격 효율적 일 것입니다. 내가 생각할 수있는

솔루션 :

  1. 은 콩나무 자동 스케일링에 의존하고있다. 나는 이것을 시도해 보았다. CPU 사용률을 기반으로 자동 크기 조정을 설정했다. 반응이 매우 느리고 신뢰할 수없는 것처럼 보입니다. 측정 시간을 1 분으로 설정하고 임계 값 70 %로 올라가면 30 분 동안 1 분씩 내려가며 1 분에 지속 시간을 위반했습니다. 규모를 늘리려면 시스템을 오래 사용하고 축소하려면 시간이 걸립니다. 조정할 수는 있지만 이상하게 느껴질 수 있습니다. 이상적으로는 마이크로보다 더 빠른 머신을 얻고 싶습니다. (작은, 중간?) 이러한 스파크 작업에는 사용할 수 있지만 콩나무 스트립은 적어도 하나는 항상 실행해야한다는 것을 의미합니다. 시스템이 유휴 상태 일 때가 대부분이므로 가격에 비추어 볼 때 그 말이 맞지 않습니다.

  2. 작업자를위한 포기 beanstalk, 마이크로에서 실행되는 SQS 대기열에 대한 내 자신의 모니터를 구현하고 대기중인 메시지가 대기열에있을 때 대기업이 큰 시스템 (또는 대형 시스템 그룹)을 가동 시키도록합니다. 그 순간 우리는 대기열을 발견하는 순간 유휴 상태입니다. 이 작업을위한 해결책이 없다면 그것은 많은 작업처럼 보입니다. 어떤 경우에는, 내가 놓친 거지 다른 좋은 방법이 있나요

나는이 두 솔루션 중 하나를 좋아하지 않아

등 환경을 관리, 자식을 통해 코드를 배포 콩나무의 혜택을 상실? 마이크로 인스턴스

감사

+0

안녕하세요 드미트리 - 당신은이 문제로 무엇을하게 되었습니까? 나는 비슷한 문제가있어서 가장 좋은 해결책이 무엇인지 알고 싶습니다. 감사! – Lereveme

+1

솔루션 # 1에 머물러있는 좋은 해결책을 찾지 못했습니다. 다시해야한다면 AWS Lambda를 살펴볼 것입니다. 두통이 사라질 수도 있습니다. –

답변

0

CPU 사용률이 아마이 경우에는 자동 확장 사용하기 가장 좋은 메트릭 없습니다.

SQS 대기열의 길이는 아마도 가장 적합한 것이고, 가장 자연스러운 의미입니다.

말할 필요도없이 더 큰 기본 라인 머신을 위해 예산을 세울 수 있다면 모든 것이 훨씬 빨라질 것입니다.

관련 문제