Memecahkan masalah hambatan di Dataflow

Hambatan terjadi saat satu langkah, tahap, atau pekerja memperlambat keseluruhan tugas. Hambatan dapat menyebabkan pekerja menganggur dan peningkatan latensi.

Jika Dataflow mendeteksi hambatan, grafik tugas akan menampilkan pemberitahuan, dan panel Info Langkah akan mencantumkan jenis hambatan dan penyebabnya, jika diketahui. Dataflow juga mengekspor informasi deteksi hambatan ke metrik Stackdriver, yang menampilkan data sebagai deret waktu. Dengan begitu, Anda dapat melihat hambatan dari waktu ke waktu atau di masa lalu.

Memahami hambatan

Saat menjalankan pipeline streaming, tugas Dataflow terdiri dari serangkaian komponen, seperti pengacakan streaming, thread pemrosesan fungsi yang ditentukan pengguna (DoFn), dan pembuatan titik pemeriksaan status persisten. Untuk memfasilitasi aliran data, Dataflow menggunakan antrean untuk menghubungkan komponen ini. Data dikirim dari hulu ke hilir.

Di banyak pipeline, kapasitas throughput keseluruhan dibatasi oleh satu komponen, sehingga menciptakan hambatan dalam pipeline. Kecepatan data dapat melewati hambatan membatasi seberapa cepat pipeline dapat menerima dan memproses data input.

Misalnya, pertimbangkan pipeline tempat pemrosesan DoFn terjadi di hilir pengacakan streaming. Antrean di antara keduanya menyimpan data yang diacak tetapi belum diproses. Jika pemrosesan DoFn tidak dapat menggunakan data secepat yang dihasilkan oleh pengacakan streaming, maka antrean akan bertambah. Hambatan yang berkepanjangan dapat menyebabkan antrean mencapai kapasitasnya. Pada saat itu, pengacakan lebih lanjut akan dijeda, dan backlog akan diteruskan ke upstream. Antrean di upstream juga menumpuk backlog, yang pada akhirnya menyebabkan perlambatan yang meluas ke sumber data, yang berarti seluruh pipeline tidak dapat mengimbangi input.

Saat terjadi hambatan, sebagian besar pipeline mungkin tampak tidak sehat, meskipun hanya satu titik dalam pipeline yang menyebabkan backlog. Perilaku ini dapat menyulitkan proses debug bottleneck. Tujuan deteksi hambatan adalah mengidentifikasi lokasi dan penyebab yang tepat, sehingga Anda dapat memperbaiki akar masalahnya.

Dataflow mendeteksi hambatan saat penundaan melebihi nilai minimum lima menit. Jika penundaan tidak melampaui nilai minimum ini, Dataflow tidak mendeteksi hambatan.

Deteksi hambatan tidak selalu mengharuskan Anda bertindak dan bergantung pada kasus penggunaan Anda. Pipeline dapat beroperasi secara normal dengan penundaan sementara lebih dari lima menit. Jika hal ini dapat diterima untuk kasus penggunaan Anda, Anda mungkin tidak perlu menyelesaikan kemacetan yang ditunjukkan.

Jenis hambatan

Saat Dataflow mendeteksi hambatan, antarmuka pemantauan akan menunjukkan tingkat keparahan masalah. Hambatan dikelompokkan ke dalam kategori berikut:

Pemrosesan macet dan tidak ada kemajuan
Progres pipeline dihentikan sepenuhnya pada langkah ini.
Pemrosesan sedang berlangsung, tetapi tertinggal.
Pipeline tidak dapat memproses data masuk secepat kedatangannya. Akibatnya, backlog meningkat.
Pemrosesan sedang berlangsung, tetapi backlog tetap stabil
Pipeline sedang berjalan, dan kecepatan pemrosesan sebanding dengan kecepatan input. Pemrosesan cukup cepat sehingga backlog tidak bertambah, tetapi backlog yang terakumulasi juga tidak berkurang secara signifikan.
Pemrosesan sedang berlangsung dan mengejar ketertinggalan dari backlog
Backlog berkurang, tetapi hambatan saat ini mencegah pipeline mengejar ketinggalan lebih cepat. Jika Anda memulai pipeline dengan backlog, status ini mungkin normal dan tidak memerlukan intervensi apa pun. Pantau progres untuk melihat apakah backlog terus berkurang.

Penyebab hambatan

Antarmuka pemantauan menampilkan penyebab hambatan, jika diketahui. Gunakan informasi ini untuk menyelesaikan masalah.

Operasi dengan waktu pemrosesan yang lama
Komputasi memiliki waktu pemrosesan yang lama. Jika komputasi yang terpengaruh ada di kode pengguna, cari cara untuk mengoptimalkan kode. Untuk membantu proses debug, log pekerja menampilkan rekaman aktivitas stack untuk setiap operasi yang macet lebih dari 5 menit.
Partisi sumber Apache Kafka tidak cukup

Komputasi sumber Apache Kafka memiliki partisi yang tidak memadai. Untuk mengatasi masalah ini, coba langkah-langkah berikut:

  • Tingkatkan jumlah partisi Kafka.
  • Gunakan transformasi Redistribute untuk mendistribusikan ulang dan memparalelkan data secara lebih efisien.

Untuk mengetahui informasi selengkapnya, lihat Paralelisme di halaman Membaca dari Apache Kafka ke Dataflow.

Paralelisme sumber tidak memadai

Komputasi sumber memiliki paralelisme yang tidak memadai. Jika memungkinkan, tingkatkan paralelisasi dalam sumber. Jika Anda tidak dapat meningkatkan paralelisme dan tugas menggunakan mode minimal sekali, coba tambahkan transformasi Redistribute ke pipeline.

Tombol pintas atau paralelisme kunci yang tidak memadai

Tugas memiliki tombol cepat atau paralelisme kunci yang tidak memadai.

Untuk setiap kunci sharding, Dataflow memproses pesan secara serial. Saat Dataflow memproses batch pesan untuk kunci tertentu, pesan masuk lainnya untuk kunci tersebut akan diantrekan hingga batch saat ini selesai.

Jika Dataflow tidak dapat memproses kunci unik yang cukup secara paralel, hal ini dapat menyebabkan hambatan. Misalnya, data mungkin memiliki terlalu sedikit kunci unik, atau kunci tertentu mungkin terlalu banyak direpresentasikan dalam data ("kunci panas"). Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah tugas yang lambat atau macet.

vCPU yang kurang disediakan

Tugas tidak memiliki vCPU pekerja yang cukup. Situasi ini terjadi saat tugas sudah diskalakan ke maksimum, pemakaian vCPU tinggi, dan masih ada tumpukan tugas.

Masalah saat berkomunikasi dengan pekerja

Dataflow tidak dapat berkomunikasi dengan semua VM pekerja. Periksa status VM pekerja tugas. Kemungkinan penyebabnya meliputi:

  • Ada masalah saat menyediakan VM pekerja.
  • Kumpulan VM pekerja dihapus saat tugas sedang berjalan.
  • Masalah jaringan.
Sumber Pub/Sub memiliki paralelisme yang tidak memadai

Komputasi sumber Pub/Sub memiliki jumlah kunci Pub/Sub yang tidak memadai. Jika Anda melihat peringatan ini, hubungi dukungan.

Sumber Pub/Sub dibatasi karena alasan yang tidak diketahui

Komputasi sumber Pub/Sub di-throttle saat membaca dari Pub/Sub, karena alasan yang tidak diketahui. Masalah ini mungkin bersifat sementara. Periksa masalah konfigurasi Pub/Sub, izin IAM yang tidak ada, atau batas kuota. Namun, jika tidak ada area sebelumnya yang menjadi penyebab utama dan masalah berlanjut, hubungi dukungan.

Publikasi sink Pub/Sub lambat atau terhenti

Komputasi sink Pub/Sub lambat atau macet. Masalah ini mungkin disebabkan oleh masalah konfigurasi atau batas kuota.

Waktu antrean kerja yang tinggi

Usia kerja yang memenuhi syarat paling lama tinggi, karena banyaknya kunci dan kecepatan pemrosesan kunci. Dalam situasi ini, setiap operasi mungkin tidak berlangsung terlalu lama, tetapi penundaan antrean secara keseluruhan tinggi.

Dataflow menggunakan satu thread pemrosesan per kunci sharding, dan jumlah thread pemrosesan dibatasi. Penundaan antrean kira-kira sama dengan rasio kunci terhadap thread, dikalikan dengan latensi dalam thread untuk setiap paket pemrosesan untuk suatu kunci:

(key count / total harness threads) * latency per bundle

Coba perbaikan berikut:

  • Tingkatkan jumlah pekerja. Lihat Penskalaan otomatis streaming.
  • Tingkatkan jumlah thread harness pekerja. Tetapkan numberOfWorkerHarnessThreads / number_of_worker_harness_threads opsi pipeline.
  • Kurangi jumlah kunci.
  • Kurangi latensi operasi.
Masalah sementara pada backend Streaming Engine

Ada masalah konfigurasi atau operasional dengan backend Streaming Engine. Masalah ini mungkin bersifat sementara. Jika masalah berlanjut, hubungi dukungan.

Langkah berikutnya