Anda dapat menggunakan Insight Dataflow untuk membantu mengoptimalkan performa tugas.
Topik ini menunjukkan cara berinteraksi dengan Insight Dataflow menggunakan gcloud
atau REST API. Anda juga dapat meninjau Insight di
Konsol Dataflow. Untuk mengetahui informasi selengkapnya tentang cara meninjau Insight di Konsol, lihat Rekomendasi.
Ringkasan
Insight Dataflow memberikan
insight tentang cara meningkatkan performa
tugas, mengurangi biaya, dan memecahkan masalah error. Insight Dataflow adalah
bagian dari layanan Recommender dan tersedia
melalui jenis google.dataflow.diagnostics.Insight
.
Saat Anda menggunakan Insight Dataflow, perlu diingat bahwa beberapa rekomendasi mungkin tidak relevan dengan kasus penggunaan Anda.
Sebelum memulai
Sebelum dapat mulai menggunakan Insight Dataflow, Anda harus menyelesaikan langkah-langkah berikut.
- Aktifkan Recommender API.
Menyiapkan autentikasi.
Select the tab for how you plan to use the samples on this page:
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, Anda menggunakan kredensial yang Anda berikan ke gcloud CLI.
Menginstal Google Cloud CLI. Setelah penginstalan, lakukan inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud init
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
Pastikan akun Anda memiliki izin berikut:
recommender.dataflowDiagnosticsInsights.get
recommender.dataflowDiagnosticsInsights.list
recommender.dataflowDiagnosticsInsights.update
Anda dapat memberikan izin ini satu per satu, atau Anda dapat memberikan salah satu peran berikut:
roles/recommender.dataflowDiagnosticsViewer
roles/recommender.dataflowDiagnosticsAdmin
roles/dataflow.viewer
roles/dataflow.developer
roles/dataflow.admin
Meminta insight Dataflow
Anda dapat mencantumkan insight Dataflow seperti yang ditunjukkan di bawah. Untuk jenis interaksi insight lainnya, lihat panduan insight untuk Recommender API.
Mencantumkan insight Dataflow
Untuk mencantumkan semua insight Dataflow untuk project Anda di region tertentu, gunakan salah satu metode berikut:
gcloud
Anda dapat menggunakan perintah
gcloud recommender insights list
untuk melihat semua insight Dataflow untuk project Anda di region tertentu.Sebelum menjalankan perintah, ganti nilai berikut:
- PROJECT_ID: ID project yang ingin Anda lihat daftar insight-nya.
- REGION: Region tempat tugas Dataflow Anda berjalan. Contoh:
us-west1
.
gcloud recommender insights list --insight-type=google.dataflow.diagnostics.Insight \ --project=PROJECT_ID \ --location=REGION
Output mencantumkan semua insight Dataflow untuk project Anda di region yang ditentukan.
REST
Anda dapat menggunakan metode insights.list Recommender API untuk mencantumkan semua insight Dataflow untuk project Anda di region tertentu.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: ID project yang ingin Anda lihat daftar insight-nya.
- REGION: Region tempat tugas Dataflow Anda berjalan. Contoh:
us-west1
.
Metode HTTP dan URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/insightTypes/google.dataflow.diagnostics.Insight/insights
Untuk mengirim permintaan menggunakan curl (Linux, macOS, atau Cloud Shell), jalankan perintah berikut:
curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ "https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/insightTypes/google.dataflow.diagnostics.Insight/insights"
Mendapatkan satu insight Dataflow
Untuk mendapatkan informasi selengkapnya tentang satu insight, termasuk deskripsi, status, dan rekomendasi yang terkait dengannya, gunakan salah satu metode berikut:
gcloud
Gunakan perintah
gcloud recommender insights describe
dengan ID insight Anda untuk melihat informasi tentang satu insight. Sebelum menjalankan perintah, ganti nilai berikut:- INSIGHT_ID: ID insight yang ingin Anda lihat.
- PROJECT_ID: ID project yang ingin Anda lihat daftar insight-nya.
- REGION: Region tempat tugas Dataflow Anda berjalan. Contoh:
us-west1
.
gcloud recommender insights describe INSIGHT_ID \ --insight-type=google.dataflow.diagnostics.Insight \ --project=PROJECT_ID \ --location=REGION
Output menampilkan insight secara mendetail.
REST
Metode insights.get Recommender API mendapatkan satu insight. Sebelum menggunakan data permintaan apa pun, lakukan penggantian berikut:
- PROJECT_ID: ID project yang ingin Anda lihat daftar insight-nya.
- REGION: Region tempat tugas Dataflow Anda berjalan. Contoh:
us-west1
. - INSIGHT_ID: ID insight yang ingin Anda lihat.
Metode HTTP dan URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/insightTypes/google.dataflow.diagnostics.Insight/insights/INSIGHT_ID
Untuk mengirim permintaan menggunakan curl (Linux, macOS, atau Cloud Shell), jalankan perintah berikut:
curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ "https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/insightTypes/google.dataflow.diagnostics.Insight/insights/INSIGHT_ID"
Menafsirkan insight Dataflow
Setelah mendapatkan insight, Anda dapat meninjau kontennya untuk memahami pola penggunaan resource yang ditandainya. Selain atribut insight standar, Insight Dataflow menyediakan subjenis berikut:
AUTOSCALING_NOT_ENABLED
: Penskalaan otomatis dapat diaktifkan. Tugas memiliki pemakaian CPU yang tinggi dan menggunakan jumlah maksimum pekerja yang ditetapkan. Mengaktifkan penskalaan otomatis dapat meningkatkan performa.HIGH_FAN_OUT
: Pemecahan penggabungan dapat disisipkan setelah satu atau beberapa transformasi untuk meningkatkan paralelisme.MAX_NUM_WORKERS
: Penskalaan otomatis: Jumlah maksimum pekerja dapat ditingkatkan. Tugas menggunakan penskalaan otomatis, memiliki penggunaan CPU yang tinggi, dan menggunakan jumlah maksimum pekerja yang ditetapkan. Meningkatkan jumlah maksimum pekerja dapat meningkatkan performa.WORKER_OUT_OF_MEMORY
: Beberapa pekerja untuk tugas gagal karena kehabisan memori, yang dapat memperlambat tugas atau menyebabkan tugas gagal.PREBUILD_NOT_UTILIZED
: Gunakan alur kerja pra-pembuatan image pekerja untuk meningkatkan waktu mulai pekerja dan keandalan penskalaan otomatis.ACTIVE_KEYS
(Pratinjau): Jumlah total kunci aktif kurang dari jumlah total core dan penskalaan ke atas tidak akan membantu.LONG_WORK_ITEM
: Pemrosesan pekerjaan dalam tahap gabungan memerlukan waktu terlalu lama, yang menunjukkan operasi berjalan lambat atau macet.
Untuk mempelajari lebih lanjut cara mengurangi masalah yang diidentifikasi oleh Insight Dataflow, lihat Insight.
Insight Dataflow juga menyediakan kolom
content
khusus yang berisi sub-kolom dengan informasi dan metadata tambahan tentang insight. Bergantung pada kasus penggunaan Anda, sub-bidangcontent
berikut mungkin berguna:jobName
: Nama tugas Dataflow.description
: Deskripsi insight dalam bahasa Inggris.title
: Judul insight dalam bahasa Inggris.
Insight
Fan-out tinggi terdeteksi
Jika Dataflow mendeteksi bahwa tugas memiliki satu atau beberapa transformasi dengan fan-out tinggi, pesan berikut akan muncul:
High fan-out detected
Pesan ini ditampilkan saat ParDo yang memiliki rasio jumlah elemen output terhadap input yang tinggi digabungkan dengan ParDo berikutnya. Dalam situasi ini, ParDo kedua berjalan secara berurutan dengan yang pertama, yang memaksa semua elemen output dari input tertentu ke pekerja yang sama dan mengurangi paralelisme serta memperlambat performa.
Untuk menyelesaikan masalah ini:
- Masukkan
GroupByKey
dan batalkan pengelompokan setelah ParDo pertama Anda. Layanan Dataflow tidak pernah menggabungkan operasi ParDo di seluruh agregasi. Untuk mengetahui informasi selengkapnya, lihat Pengoptimalan Fusion - Teruskan PCollection perantara sebagai input samping ke ParDo lain. Layanan Dataflow selalu mewujudkan input samping.
- Sisipkan langkah Acak Ulang. Pengacakan ulang mencegah penggabungan, memeriksa titik pemeriksaan data, dan mengonfigurasi ulang strategi windowing sehingga tidak ada data yang dihapus. Pengacakan ulang didukung oleh Dataflow meskipun ditandai tidak digunakan lagi dalam dokumentasi Apache Beam (perhatikan bahwa mengacak ulang data dapat meningkatkan biaya menjalankan pipeline Anda).
Penskalaan otomatis: Jumlah maksimum pekerja dapat ditingkatkan
Saat Dataflow mendeteksi bahwa tugas menggunakan jumlah maksimum pekerja yang diizinkan,
maxNumWorkers
(ataumax_num_workers
), dan tugas tersebut mungkin menggunakan lebih banyak pekerja jika jumlah maksimum ini ditingkatkan, pesan berikut akan muncul:maximum number of workers could be increased
Misalnya, rekomendasi ini muncul untuk tugas batch atau streaming yang memiliki
maxNumWorkers
ditetapkan ke 50 saat semua 50 pekerja digunakan dengan penggunaan CPU pekerja rata-rata di atas 80%. Rekomendasi ini juga muncul untuk tugas streaming yang memilikimaxNumWorkers
yang ditetapkan ke 50 saat semua 50 pekerja digunakan dengan penggunaan CPU pekerja rata-rata di atas 50% dan tugas memiliki perkiraan waktu pemrosesan lebih dari 2 menit.Biasanya, peningkatan
maxNumWorkers
akan meningkatkan throughput pipeline. Pipeline batch dapat diselesaikan dalam waktu yang lebih singkat, dan pipeline streaming dapat menangani lonjakan data yang lebih besar dan memproses lebih banyak elemen per detik. Namun, hal ini mungkin menimbulkan biaya yang lebih tinggi. Untuk mengetahui informasi selengkapnya, lihat Harga resource pekerja. Untuk mengetahui detail tentang cara kerja algoritma Penskalaan otomatis dan cara mengonfigurasinya, lihat Panduan penskalaan otomatis.Untuk menyelesaikan masalah ini:
- Menambah atau menghapus opsi pipeline
maxNumWorkers
. Tanpa opsi ini, Dataflow akan menggunakan nilai default yang tercantum dalam Panduan penskalaan otomatis. - Tidak apa-apa untuk tidak melakukan apa pun jika performa pipeline sudah memadai.
- Untuk pipeline batch, pastikan total waktu berjalan memenuhi persyaratan Anda.
- Untuk pipeline streaming, periksa grafik Keaktualan data di tab Metrik Tugas pada halaman tugas. Pastikan nilai dalam grafik tidak terus meningkat dan berada dalam batas yang dapat diterima.
Penskalaan otomatis: Menetapkan jumlah pekerja awal dapat meningkatkan performa tugas
Jika Dataflow mendeteksi bahwa tugas menggunakan sejumlah pekerja tertentu selama lebih dari 50% waktu berjalan, menetapkan jumlah pekerja awal ke nilai yang direkomendasikan dapat meningkatkan performa tugas dengan mengurangi waktu berjalan untuk tugas batch atau mencegah backlog bertambah saat memperbarui tugas streaming.
Worker gagal dengan error OutOfMemory
Saat Dataflow mendeteksi bahwa pekerja untuk suatu tugas gagal karena error Out of Memory, pesan berikut akan muncul:
Some workers are out of memory
Beberapa pekerja untuk tugas gagal karena kehabisan memori. Meskipun tugas dapat diselesaikan, error ini juga dapat mencegah tugas diselesaikan dengan berhasil atau memperlambat performa.
Coba saran berikut:
- Tingkatkan jumlah memori yang tersedia untuk pekerja secara manual.
- Kurangi jumlah memori yang diperlukan, dengan membuat profil penggunaan memori. Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah error kehabisan memori Dataflow.
Alur kerja pra-build tidak digunakan
Jika Dataflow mendeteksi pipeline yang tidak menggunakan alur kerja pra-build image pekerja, pesan berikut akan muncul:
pre-build workflow not utilized
Jika alur kerja pra-pembuatan image pekerja tidak digunakan, pipeline memiliki dependensi yang diinstal berulang kali saat runtime. Konfigurasi ini memperlambat waktu mulai pekerja, yang menurunkan throughput tugas dan menyebabkan perilaku penskalaan otomatis yang tidak andal.
Untuk mengatasi masalah ini, gunakan alur kerja pra-build image pekerja saat meluncurkan pipeline. Untuk mengetahui informasi selengkapnya, lihat Membangun dependensi Python terlebih dahulu.
Jika container bawaan yang disesuaikan sudah digunakan, untuk menghindari penginstalan yang tidak perlu, tambahkan opsi '--sdk_location=container', dan hapus opsi berikut:
- '--setup_file'
- '--requirements_file'
- '--extra_package(s)'
Kunci aktif rendah
Saat Dataflow mendeteksi bahwa suatu tugas tertinggal karena jumlah kunci aktif kurang dari jumlah total core dan penskalaan tidak akan membantu, pesan berikut akan muncul:
Active keys can be increased
Untuk menjalankan kode pengguna dalam tugas, Dataflow menggunakan pekerja. Setiap thread dipetakan ke kunci yang bertanggung jawab atas sekumpulan data yang akan diproses dan kunci hanya dapat dijalankan pada satu core dalam satu waktu karena alasan kebenaran.
Dalam beberapa kasus, beberapa core bekerja terlalu keras sementara yang lain tidak bekerja. Untuk mengatasi masalah ini, tingkatkan jumlah kunci, yang juga akan meningkatkan jumlah thread aktif.
Solusi potensial untuk menambah kunci: - Anda dapat menambah jumlah kunci dengan menggunakan jenis kunci yang lebih spesifik. Misalnya, jika jenis kunci adalah
IP address
, lebih sedikit kunci yang tersedia. Namun, jika Anda mengubah jenis kunci menjadiIP + [user identifier]
, lebih banyak kunci tersedia, yang meningkatkan paralelisme. - Untuk pipeline yang menulis ke BigQuery yang berpotensi mengalami hambatan di sink, lihat artikel ini. - Untuk sumber/tujuan lain, periksa apakah memiliki parameternumShards
dan tingkatkan. Secara umum, satu shard dipetakan ke satu kunci. - Untuk panduan umum selengkapnya tentang model eksekusi kami, lihat artikel ini. - Fanout dapat digunakan untuk mengambil satu kunci input dan menambahkan hash ke kunci tersebut untuk menghasilkan beberapa kunci output. ReferensiMenghabiskan terlalu banyak waktu untuk bekerja
Saat Dataflow mendeteksi bahwa pekerjaan sering kali memerlukan waktu terlalu lama untuk menyelesaikan pemrosesan, pesan berikut akan muncul:
Stage spending too long on work
Dataflow mengirimkan tugas ke tahap gabungan dalam paket elemen yang akan diproses, dan setiap paket dianggap selesai setelah semua elemen dan outputnya diproses untuk tahap tersebut. Pipeline streaming dioptimalkan di sekitar kumpulan tugas yang memerlukan waktu kurang dari satu menit untuk diproses sepenuhnya, sehingga waktu pemrosesan yang lama dapat menyebabkan masalah performa lebih lanjut dalam pipeline.
Masalah ini dapat disebabkan oleh transformasi pengguna yang macet atau lambat. Transformasi ini dapat diidentifikasi berdasarkan peringatan yang dikeluarkan di Cloud Logging dan tab Diagnostiknya, dengan frasa utama "Operasi sedang berlangsung" atau "Pemrosesan macet". Untuk mendiagnosis apakah masalah ini disebabkan oleh transformasi pengguna, gunakan Cloud Profiler untuk memeriksa performa transformasi pengguna. Kemudian, lacak kode yang menyebabkan perlambatan dan seberapa sering. Untuk mengetahui informasi selengkapnya, lihat Memecahkan Masalah Error Aliran Data Umum.
Jika penyelidikan mengungkapkan bahwa waktu pemrosesan yang lama tidak disebabkan oleh transformasi pengguna, sebaiknya hubungi Dukungan Cloud dan jelaskan langkah-langkah yang dilakukan untuk menyelidiki.
Pekerjaan macet di item tugas
Saat Dataflow mendeteksi bahwa kunci macet karena satu item kerja telah berulang kali gagal dan kemudian dicoba lagi, pesan berikut akan muncul:
Job is stuck due to failed and retried work item
Di Dataflow, semua pesan dalam pipeline diproses dengan kunci tertentu. Jika terjadi error saat memproses pesan, pesan tersebut akan dicoba lagi. Pesan dapat dicoba lagi dua atau tiga kali. Namun, jika error terjadi berulang kali, seperti sepuluh kali berturut-turut, biasanya hal ini menunjukkan masalah mendasar pada kode pipeline. Saat pesan tertentu pada kunci dicoba lagi, pesan lain di bawah kunci yang sama tidak dapat diproses. Jika pesan gagal 10 kali atau lebih, masalah ini kemungkinan tidak akan teratasi dengan sendirinya. Kegagalan pesan ini dapat menyebabkan masalah pipeline seperti:
- menunda watermark
- backlog yang terakumulasi
- mencegah operasi pengurasan selesai
Untuk men-debug masalah ini, selidiki tahap yang dilaporkan rekomendasi dan tinjau log untuk mengidentifikasi kode yang bermasalah. Kemudian, perbarui tugas dengan kode pipeline baru agar tugas tidak macet.
Streaming Engine tidak diaktifkan
Jika Dataflow mendeteksi bahwa tugas streaming tidak mengaktifkan Streaming Engine, pesan berikut akan muncul:
This job isn't using Streaming Engine. It might benefit from having Streaming Engine enabled.
Penggunaan Streaming Engine memiliki berbagai potensi manfaat, termasuk penskalaan otomatis horizontal yang lebih baik, dukungan yang lebih baik, dan pengurangan penggunaan resource CPU, memori, dan penyimpanan Persistent Disk di VM pekerja. Streaming Engine juga mendukung penagihan berbasis resource.
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-08-08 UTC.