Melacak pesan di beberapa antrean AWS SQS

Saya memiliki sekitar 3 fungsi AWS Lambda dengan bentuk berikut:

  • Fungsi Lambda 1: Membaca dari antrean SQS dan meletakkan Pesan pada antrean SQS (format pesan masuk dan keluar berbeda)
  • Fungsi Lambda 2: Membaca pesan dari fungsi Lambda 1, dan meletakkan Pesan pada antrean SQS (format pesan masuk dan keluar berbeda)
  • Fungsi Lambda 3: Membaca pesan dari fungsi Lambda 3, dan memperbarui penyimpanan.

Ada 3 antrian yang terlibat dan format pesan (struktur) di setiap antrian berbeda, namun mereka memiliki satu uniqueId yang sama dan dapat digunakan untuk berhubungan satu sama lain. Banyak pertanyaannya adalah, apakah ada cara di SQS atau alat lain untuk melacak pesan, yang secara khusus saya lihat adalah hal-hal seperti:

  • Waktu pesan dimasukkan ke dalam antrian
  • Waktu pesan diambil oleh fungsi Lambda untuk diproses

Masalah saya adalah 3 fungsi Lambda bekerja secara individual dalam beberapa milidetik, tetapi waktu yang dibutuhkan untuk eksekusi ujung ke ujung terlalu lama, saya curiga pesannya memakan waktu terlalu lama dalam pengiriman.

Saya terbuka untuk ide lain tentang pengoptimalan.


person pandith padaya    schedule 07.03.2020    source sumber
comment
Menurut saya sqs dan x-ray bisa berguna. Mungkin harus menambahkan annotations ke segmen x-ray dengan uniqueId Anda sehingga nantinya Anda dapat memfilter pesan yang Anda inginkan.   -  person Marcin    schedule 07.03.2020
comment
Terima kasih, saya memang melihatnya, tetapi ini berarti saya perlu mengubah kode saya sekarang untuk menyertakan header tambahan ini?   -  person pandith padaya    schedule 07.03.2020
comment
Ya. Saya tidak memiliki gambaran keseluruhan tentang hal ini di kepala saya, tetapi ini adalah hal pertama yang akan saya pertimbangkan. Alternatifnya, Anda bisa menambahkan waktu ke setiap pesan di setiap lambda, dan secara manual memeriksa berapa lama waktu yang dibutuhkan dari lambda pertama hingga terakhir.   -  person Marcin    schedule 07.03.2020
comment
Dan berapa lama itu terlalu lama? Mungkin ada penyebab lain untuk ini, mis. Anda menunda pesan atau menggunakan antrian penundaan?   -  person Marcin    schedule 07.03.2020


Jawaban (1)


AWS Step Functions dirancang khusus untuk meneruskan informasi antar fungsi Lambda dan mengatur seluruh proses.

Namun, Anda perlu mengubah cara penulisan fungsi untuk memanfaatkan Step Functions.

Karena satu-satunya keinginan Anda yang sebenarnya adalah mencari tahu mengapa hal ini memakan waktu "terlalu lama", maka AWS X-Ray harus menjadi cara yang baik untuk mengumpulkan informasi ini. Itu dapat melacak satu transaksi end-to-end melalui setiap proses. Saya pikir ini hanya masalah memasukkan perpustakaan dan mengaktifkan X-Ray.

Lihat: AWS Lambda dan AWS X-Ray - AWS X -Sinar

Atau, mulailah melakukan penyelidikan manual pada file log. Log menunjukkan berapa lama waktu yang diperlukan untuk menjalankan setiap fungsi, sehingga Anda harus dapat mengidentifikasi apakah waktu yang dibutuhkan dalam fungsi Lambda tertentu, atau apakah waktu tersebut dihabiskan di antara fungsi, menunggu untuk dipicu.

person John Rotenstein    schedule 07.03.2020
comment
Saya sebenarnya lebih peduli dengan melihat waktu yang dibutuhkan pesan untuk berpindah antar antrian. Sayangnya dokumentasi AWS tampaknya tidak memberikan contoh yang baik mengenai hal ini. Apakah saya perlu memasukkan MessageAttribute tambahan ke dalam pesan itu sendiri? - person pandith padaya; 08.03.2020