Kotak pasir

Kusto dapat menjalankan kotak pasir untuk alur tertentu yang harus dijalankan di lingkungan yang aman dan terisolasi. Contoh alur ini adalah skrip yang ditentukan pengguna yang berjalan menggunakan plugin Python atau plugin R.

Kotak pasir dijalankan secara lokal (artinya, pemrosesan dilakukan dekat dengan data), tanpa latensi tambahan untuk panggilan jarak jauh.

Prasyarat dan batasan

Runtime

  • Operator kueri kotak pasir dapat menggunakan satu atau beberapa kotak pasir untuk eksekusinya.
    • Kotak pasir hanya digunakan untuk satu kueri dan dibuang setelah kueri selesai.
    • Ketika node dihidupkan ulang, misalnya, sebagai bagian dari peningkatan layanan, semua kotak pasir yang berjalan di atasnya dibuang.
  • Setiap node mempertahankan jumlah kotak pasir yang telah ditentukan sebelumnya yang siap untuk menjalankan permintaan yang masuk.
    • Setelah kotak pasir digunakan, yang baru secara otomatis tersedia untuk menggantikannya.
  • Jika tidak ada kotak pasir yang telah dialokasikan sebelumnya yang tersedia untuk melayani operator kueri, kotak pasir tersebut akan dibatasi hingga kotak pasir baru tersedia. Untuk informasi selengkapnya, lihat Kesalahan. Alokasi kotak pasir baru bisa memakan waktu hingga 10-15 detik per kotak pasir, bergantung pada SKU dan sumber daya yang tersedia pada node data.

Parameter kotak pasir

Beberapa parameter dapat dikontrol menggunakan kebijakan kotak pasir kebijakan kluster, untuk setiap jenis kotak pasir.

  • Jumlah kotak pasir per node: Jumlah kotak pasir per node terbatas.
    • Permintaan yang dibuat ketika tidak ada kotak pasir yang tersedia akan dibatasi.
  • Inisialisasi pada startup: jika diatur ke false (default), kotak pasir diinisialisasi dengan malas pada node, pertama kali kueri memerlukan kotak pasir untuk eksekusinya. Jika tidak, jika diatur ke true, kotak pasir diinisialisasi sebagai bagian dari startup layanan.
    • Ini berarti bahwa eksekusi pertama plugin yang menggunakan kotak pasir pada node akan mencakup periode pemanasan singkat.
  • CPU: Tingkat maksimum CPU yang dapat dikonsumsi kotak pasir dari prosesor host-nya terbatas (default-nya adalah 50%).
    • Ketika batas tercapai, penggunaan CPU kotak pasir dibatasi, tetapi eksekusi berlanjut.
  • Memori: Jumlah maksimum RAM yang dapat dikonsumsi sandbox dari RAM host-nya terbatas.
    • Memori default untuk teknologi Hyper-V adalah 1 GB, dan untuk kotak pasir warisan 20 GB.
    • Mencapai batas dapat mengakibatkan penghentian kotak pasir, dan kesalahan eksekusi kueri.

Batasan kotak pasir

  • Jaringan: Kotak pasir tidak dapat berinteraksi dengan sumber daya apa pun di mesin virtual (VM) atau di luarnya.
    • Kotak pasir tidak dapat berinteraksi dengan kotak pasir lain.

Catatan

Sumber daya yang digunakan dengan kotak pasir tidak hanya bergantung pada ukuran data yang diproses sebagai bagian dari permintaan, tetapi juga pada logika yang berjalan di kotak pasir, dan implementasi pustaka yang digunakan olehnya. Misalnya, untuk plugin python dan r, yang terakhir berarti skrip yang disediakan pengguna dan pustaka Python atau R yang dikonsumsi saat runtime.

Kesalahan

ErrorCode Status Pesan Alasan potensial
E_SB_QUERY_THROTTLED_ERROR TooManyRequests (429) Kueri kotak pasir dibatalkan karena pembatasan. Mencoba lagi setelah beberapa backoff mungkin berhasil Tidak ada kotak pasir yang tersedia pada node target. Kotak pasir baru akan tersedia dalam beberapa detik
E_SB_QUERY_THROTTLED_ERROR TooManyRequests (429) Kotak pasir jenis '{kind}' belum diinisialisasi Kebijakan kotak pasir baru-baru ini berubah. Kotak pasir baru yang mematuhi kebijakan baru akan tersedia dalam beberapa detik
InternalServiceError (520) Kueri kotak pasir dibatalkan karena kegagalan dalam menginisialisasi kotak pasir Kegagalan infrastruktur yang tidak terduga.

Ukuran VM yang mendukung virtualisasi berlapis

Tabel berikut mencantumkan semua ukuran VM modern yang mendukung teknologi kotak pasir Hyper-V.

Nama Kategori
Standard_L8s_v3 dioptimalkan untuk penyimpanan
Standard_L16s_v3 dioptimalkan untuk penyimpanan
Standard_L8as_v3 dioptimalkan untuk penyimpanan
Standard_L16as_v3 dioptimalkan untuk penyimpanan
Standard_E8as_v5 dioptimalkan untuk penyimpanan
Standard_E16as_v5 dioptimalkan untuk penyimpanan
Standard_E8s_v4 dioptimalkan untuk penyimpanan
Standard_E16s_v4 dioptimalkan untuk penyimpanan
Standard_E8s_v5 dioptimalkan untuk penyimpanan
Standard_E16s_v5 dioptimalkan untuk penyimpanan
Standard_E2ads_v5 dioptimalkan untuk komputasi
Standard_E4ads_v5 dioptimalkan untuk komputasi
Standard_E8ads_v5 dioptimalkan untuk komputasi
Standard_E16ads_v5 dioptimalkan untuk komputasi
Standard_E2d_v4 dioptimalkan untuk komputasi
Standard_E4d_v4 dioptimalkan untuk komputasi
Standard_E8d_v4 dioptimalkan untuk komputasi
Standard_E16d_v4 dioptimalkan untuk komputasi
Standard_E2d_v5 dioptimalkan untuk komputasi
Standard_E4d_v5 dioptimalkan untuk komputasi
Standard_E8d_v5 dioptimalkan untuk komputasi
Standard_E16d_v5 dioptimalkan untuk komputasi
Standard_D32d_v4 dioptimalkan untuk komputasi