View a markdown version of this page

Memecahkan masalah layanan Amazon ECS Express Mode - Amazon Elastic Container Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah layanan Amazon ECS Express Mode

Bagian ini membantu Anda mengidentifikasi dan menyelesaikan masalah umum saat menerapkan dan mengelola layanan Mode Ekspres.

Masalah deployment

Layanan macet dalam status AKTIF atau DRAINING

Gejala: DescribeServiceRevisions menunjukkan sumber daya masih menyediakan atau menghapus penyediaan. DescribeServices menunjukkan penyebaran tidak stabil

Kemungkinan penyebab dan solusi:

  • Izin IAM tidak mencukupi - Pastikan peran eksekusi tugas dan peran infrastruktur memiliki izin yang diperlukan seperti yang ditunjukkan dalam kebijakan terkelola masing-masing.

    # Check if the role has the required managed policy aws iam list-attached-role-policies --role-name ecsTaskExecutionRole
  • Kegagalan penarikan gambar - Pastikan gambar wadah ada dan dapat diakses.

    # Test image pull manually docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-app:latest
  • Masalah konektivitas jaringan - Periksa apakah subnet memiliki akses internet atau titik akhir Amazon VPC untuk layanan. AWS

  • Batas sumber daya - Pastikan akun Anda memiliki kapasitas Fargate yang cukup dan belum mencapai kuota layanan.

Langkah-langkah diagnostik:

  1. Gunakan DescribeExpressGatewayService untuk mendapatkan Revisi Layanan Anda saat inidiikuti oleh DescribeServiceRevisions untuk mendapatkan status pada ServiceRevision penyediaan atau deprovisioning

  2. Periksa peristiwa layanan di konsol Amazon ECS untuk pesan kesalahan terperinci.

  3. Periksa port kontainer diatur dengan benar

  4. Periksa AWS kuota layanan untuk Amazon ECS dan Fargate.

Kegagalan startup tugas

Gejala: Tugas gagal dimulai atau segera berhenti setelah dimulai.

Penyebab umum:

  • Kesalahan aplikasi - Aplikasi kontainer keluar karena kesalahan konfigurasi atau runtime.

  • Kegag alan pemeriksaan kesehatan - Aplikasi tidak menanggapi pemeriksaan kesehatan pada port atau jalur yang diharapkan.

  • Kendala sumber daya - CPU atau alokasi memori tidak mencukupi untuk aplikasi.

  • Variabel lingkungan atau rahasia yang hilang - Konfigurasi yang diperlukan tidak tersedia untuk aplikasi.

Langkah-langkah resolusi:

  1. Periksa log aplikasi di CloudWatch Log, dapatkan nama grup log dari DescribeServiceRevisions:

    aws logs describe-log-streams --log-group-name /ecs/express-service-my-app aws logs get-log-events --log-group-name /ecs/express-service-my-app --log-stream-name stream-name
  2. Verifikasi bahwa jalur pemeriksaan kesehatan mengembalikan status HTTP 200.

  3. Uji gambar wadah secara lokal untuk memastikannya dimulai dengan benar.

  4. Tinjau dan sesuaikan CPU dan alokasi memori jika diperlukan.

Kesalahan definisi tugas khusus

Pembuatan atau pembaruan layanan gagal dengan InvalidParameterException saat menggunakan taskDefinitionArn parameter.

“tugas DefinitionArn tidak dapat disediakan dengan PrimaryContainer, eksekusiRoleArn, tugasRoleArn, cpu, atau memori.”

taskDefinitionArnParameter tidak dapat ditentukan denganprimaryContainer,executionRoleArn,taskRoleArn,cpu, atau memory dalam panggilan API yang sama. Mode Ekspres memperoleh nilai-nilai ini dari definisi tugas yang disediakan.

“Definisi tugas harus berisi wadah bernama 'Utama' dengan pemetaan port TCP tunggal.”

Definisi tugas Anda tidak memenuhi persyaratan Mode Ekspres. Pastikan memiliki:

  • Sebuah wadah bernama Main

  • Kon Main tainer memiliki persis satu pemetaan port TCP dengan port kontainer dan nama port yang ditentukan

  • Definisi tugas memiliki kompatibil FARGATE itasnya

Masalah konektivitas

Aplikasi tidak dapat dijangkau melalui penyeimbang beban

Gejala: URL aplikasi mengembalikan batas waktu atau kesalahan koneksi.

Langkah-langkah pemecahan masalah:

  1. Memvalidasi sumber daya Anda telah selesai menyediakan

  2. Verifikasi bahwa tugas berjalan dan sehat:

    aws ecs describe-services --cluster my-cluster --services my-express-service
  3. Periksa kesehatan kelompok target Penyeimbang Beban Aplikasi:

    aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:region:account:targetgroup/name/id
  4. Pastikan aplikasi mendengarkan pada port yang benar di dalam wadah.

Masalah kinerja

Waktu respons yang lambat

Gejala: Resp ons aplikasi lebih lambat dari yang diharapkan.

Pendekatan diagnostik:

  1. Memantau CPU dan pemanfaatan memori:

    # Check CloudWatch metrics for the service aws cloudwatch get-metric-statistics \ --namespace AWS/ECS \ --metric-name CPUUtilization \ --dimensions Name=ServiceName,Value=my-express-service Name=ClusterName,Value=my-cluster \ --start-time 2024-01-01T00:00:00Z \ --end-time 2024-01-01T01:00:00Z \ --period 300 \ --statistics Average
  2. Tinjau log aplikasi untuk kesalahan atau peringatan kinerja.

  3. Periksa apakah penskalaan otomatis merespons pemuatan dengan tepat.

  4. Analisis metrik penyeimbang beban untuk distribusi permintaan.

Strategi pengoptimalan:

  • Tingkatkan CPU atau alokasi memori jika sumber daya dibatasi.

  • Sesuaikan ambang penskalaan otomatis untuk menskalakan lebih awal.

  • Mengoptimalkan kode aplikasi dan kueri database.

Penskalaan otomatis tidak berfungsi seperti yang diharapkan

Gejala: Layanan tidak meningkat selama beban tinggi atau tidak berkurang saat beban rendah.

Langkah-langkah pemecahan masalah:

  1. Periksa kebijakan penskalaan otomatis dan konfigurasinya:

    aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-express-service
  2. Tinjau CloudWatch metrik untuk memastikan pemicu penskalaan terpenuhi.

  3. Verifikasi bahwa layanan memiliki izin untuk menskalakan (periksa peran IAM).

  4. Periksa aktivitas penskalaan apa pun dan hasilnya.

Alat pemantauan dan debugging

Menggunakan CloudWatch Wawasan Kontainer

Aktifkan Wawasan Kontainer untuk pemantauan komprehensif:

aws ecs put-account-setting --name containerInsights --value enabled

Container Insights menyediakan:

  • Metrik CPU, memori, disk, dan jaringan

  • Dasbor pemantauan kinerja

  • Korelasi dan analisis log

  • Deteksi anomali