Memecahkan masalah tugas batch yang lambat atau macet

Halaman ini menjelaskan cara memecahkan masalah penyebab umum tugas batch Dataflow yang lambat atau macet.

Jika tugas batch Anda lambat atau macet, gunakan tab Detail eksekusi untuk menemukan informasi selengkapnya tentang tugas dan mengidentifikasi tahap atau pekerja yang menyebabkan hambatan.

Mengidentifikasi akar masalah

  1. Periksa apakah tugas mengalami masalah selama startup pekerja. Untuk mengetahui informasi selengkapnya, lihat Error saat menyinkronkan pod.

    Untuk memverifikasi bahwa tugas telah mulai memproses data, lihat log job-message untuk menemukan entri log berikut:

    All workers have finished the startup processes and began to receive work requests
    
  2. Untuk membandingkan performa tugas di antara tugas yang berbeda, pastikan volume data input, konfigurasi pekerja, perilaku penskalaan otomatis, dan setelan Pengacakan Dataflow sama.

  3. Periksa log job-message untuk mengetahui masalah seperti batas kuota, masalah kehabisan stok, atau kehabisan alamat IP.

  4. Di tab Detail eksekusi, bandingkan progres tahap untuk mengidentifikasi tahap yang memakan waktu lebih lama.

  5. Cari tugas yang tertinggal. Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah tugas batch yang tertunda.

  6. Periksa metrik throughput, CPU, dan pemakaian memori.

  7. Periksa log pekerja untuk melihat peringatan dan error.

  8. Periksa tombol cepat.

  9. Jika Anda tidak menggunakan Pengacakan Dataflow, periksa log pengacak untuk mengetahui peringatan dan error selama operasi pengacakan. Jika Anda melihat error waktu tunggu RPC di port 12345 atau 12346, tugas Anda mungkin tidak memiliki aturan firewall. Lihat Aturan firewall untuk Dataflow.

  10. Jika Runner v2 diaktifkan, periksa log harness untuk menemukan error. Untuk mengetahui informasi selengkapnya, lihat Memecahkan Masalah Runner v2.

Mengidentifikasi pengikut yang tertinggal

Item yang tertinggal adalah item kerja yang lambat dibandingkan dengan item kerja lainnya dalam tahap. Untuk mengetahui informasi tentang mengidentifikasi dan memperbaiki tugas yang tertinggal, lihat Memecahkan masalah tugas yang tertinggal dalam tugas batch.

Mengidentifikasi tahap yang lambat atau macet

Untuk mengidentifikasi tahap yang lambat atau macet, gunakan tampilan Progres tahap. Batang yang lebih panjang menunjukkan bahwa tahap tersebut membutuhkan lebih banyak waktu. Gunakan tampilan ini untuk mengidentifikasi tahap terlama dalam pipeline Anda.

Setelah menemukan tahap hambatan, Anda dapat melakukan langkah-langkah berikut:

  • Identifikasi pekerja yang tertinggal dalam tahap tersebut.
  • Jika tidak ada pekerja yang tertinggal, identifikasi langkah paling lambat menggunakan panel Info tahap. Gunakan informasi ini untuk mengidentifikasi kandidat pengoptimalan kode pengguna.
  • Untuk menemukan hambatan paralelisme, gunakan Metrik pemantauan Dataflow.

Mengidentifikasi pekerja yang tertinggal

Untuk mengidentifikasi pekerja yang tertinggal di tahap tertentu, gunakan tampilan Progres pekerja. Tampilan ini menunjukkan apakah semua pekerja memproses pekerjaan hingga akhir tahap, atau apakah satu pekerja mengalami masalah pada tugas yang tertunda. Jika Anda menemukan pekerja yang lambat, lakukan langkah-langkah berikut:

Alat untuk proses debug

Jika pipeline Anda lambat atau macet, alat berikut dapat membantu Anda mendiagnosis masalah tersebut.

  • Untuk mengorelasikan insiden dan mengidentifikasi hambatan, gunakan Cloud Monitoring untuk Dataflow.
  • Untuk memantau performa pipeline, gunakan Cloud Profiler.
  • Beberapa transformasi lebih cocok untuk pipeline bervolume tinggi daripada yang lain. Pesan log dapat mengidentifikasi transformasi pengguna yang macet di pipeline batch atau streaming.
  • Untuk mempelajari lebih lanjut tugas yang macet, gunakan Metrik tugas Dataflow. Daftar berikut mencakup metrik yang berguna:
    • Metrik Backlog bytes (backlog_bytes) mengukur jumlah input yang belum diproses dalam byte menurut tahap. Gunakan metrik ini untuk menemukan langkah gabungan yang tidak memiliki throughput. Demikian pula, metrik elemen backlog (backlog_elements) mengukur jumlah elemen input yang belum diproses untuk suatu tahap.
    • Metrik Kunci paralelisme pemrosesan (processing_parallelism_keys) mengukur jumlah kunci pemrosesan paralel untuk tahap tertentu dalam pipeline selama lima menit terakhir. Gunakan metrik ini untuk menyelidiki dengan cara berikut:
      • Persempit masalah ke tahap tertentu dan konfirmasi peringatan tombol pintas, seperti A hot key ... was detected.
      • Menemukan hambatan throughput yang disebabkan oleh paralelisme yang tidak memadai. Bottleneck ini dapat menyebabkan pipeline berjalan lambat atau macet.
    • Metrik Keterlambatan sistem (system_lag) dan metrik keterlambatan sistem per tahap (per_stage_system_lag) mengukur jumlah waktu maksimum item data diproses atau menunggu pemrosesan. Gunakan metrik ini untuk mengidentifikasi tahap yang tidak efisien dan hambatan dari sumber data.

Untuk metrik tambahan yang tidak disertakan dalam antarmuka web pemantauan Dataflow, lihat daftar lengkap metrik Dataflow di Google Cloud metrik.