Bagikan melalui


Memantau dan mengelola performa Azure SQL Database di aplikasi SaaS multi-penyewa

Berlaku untuk:Azure SQL Database

Dalam tutorial ini, beberapa skenario manajemen performa utama yang digunakan dalam aplikasi SaaS dieksplorasi. Menggunakan generator beban untuk mensimulasikan aktivitas di semua database penyewa, fitur pemantauan dan peringatan bawaan SQL Database dan kumpulan elastis ditunjukkan.

Aplikasi Wingtip Tickets SaaS Database Per Penyewa menggunakan model data penyewa tunggal, di mana setiap tempat (penyewa) memiliki database mereka sendiri. Seperti banyak aplikasi SaaS, pola beban kerja penyewa yang diantisipasi tidak dapat diprediksi dan secara sporadis. Dengan kata lain, penjualan tiket dapat terjadi kapan saja. Untuk memanfaatkan pola penggunaan database yang khas ini, database penyewa ditempatkan ke dalam kumpulan elastis. Kumpulan elastis mengoptimalkan biaya solusi dengan berbagi sumber daya di banyak database. Dengan jenis pola ini, penting untuk memantau penggunaan database dan sumber daya kumpulan untuk memastikan bahwa beban cukup seimbang di seluruh kumpulan. Anda juga perlu memastikan bahwa database individual memiliki sumber daya yang memadai, dan bahwa kumpulan tidak mencapai batas eDTU mereka. Tutorial ini mengeksplorasi cara-cara untuk memantau dan mengelola database dan kumpulan, dan cara mengambil tindakan korektif dalam menanggapi variasi dalam beban kerja.

Dalam tutorial ini, Anda akan mempelajari cara:

  • mensimulasikan penggunaan pada database penyewa dengan menjalankan generator beban yang disediakan
  • Memantau database penyewa saat merespons peningkatan beban
  • Meningkatkan kumpulan Elastis sebagai respons terhadap peningkatan beban database
  • Menyediakan kumpulan Elastis kedua untuk menyeimbangkan muatan aktivitas database

Untuk menyelesaikan tutorial ini, pastikan prasyarat berikut ini diselesaikan:

Pengenalan untuk pola manajemen performa SaaS

Mengelola performa database terdiri dari mengompilasi dan menganalisis performa data, lalu bereaksi terhadap data ini dengan menyesuaikan parameter untuk mempertahankan waktu respons yang dapat diterima untuk aplikasi Anda. Saat menghosting beberapa penyewa, Kumpulan elastis adalah cara hemat biaya untuk menyediakan dan mengelola sumber daya untuk sekelompok database dengan beban kerja yang tidak dapat diprediksi. Dengan pola beban kerja tertentu, sesedikitnya dua database S3 dapat memperoleh manfaat dari dikelola dalam kumpulan.

application diagram

Kumpulan-kumpulan, dan database dalam kumpulan, harus dipantau untuk memastikan mereka tetap berada dalam rentang performa yang dapat diterima. Sesuaikan konfigurasi kumpulan untuk memenuhi kebutuhan agregat beban kerja semua database, memastikan bahwa eDTUs kumpulan sesuai untuk beban kerja keseluruhan. Sesuaikan nilai eDTU maksimum per database dan nilai eDTU per database dengan nilai yang sesuai untuk persyaratan aplikasi spesifik Anda.

Strategi manajemen performa

  • Untuk menghindari harus memantau performa secara manual, paling efektif untuk mengatur pemberitahuan yang memicu saat database atau kumpulan menyimpang dari rentang normal.
  • Untuk menanggapi fluktuasi jangka pendek dalam ukuran komputasi agregat kumpulan, tingkat kumpulan eDTU dapat diperingkatkan ke atas atau ke bawah. Jika fluktuasi ini terjadi secara teratur atau dapat diprediksi, penskalaan kumpulan dapat dijadwalkan terjadi secara otomatis. Misalnya, menurunkan skala ketika Anda tahu beban kerja Anda ringan, mungkin semalam, atau selama akhir pekan.
  • Untuk menanggapi fluktuasi jangka panjang, atau perubahan jumlah database, database individual dapat dipindahkan ke kumpulan lain.
  • Untuk menanggapi peningkatan jangka pendek dalam database individualmuatan database individual dapat diambil dari kumpulan dan diberi ukuran komputasi individual. Setelah beban dikurangi, database kemudian dapat dikembalikan ke kumpulan. Ketika ini diketahui sebelumnya, database dapat dipindahkan terlebih dahulu untuk memastikan database selalu memiliki sumber daya yang dibutuhkan, dan untuk menghindari dampak pada database lain di kumpulan. Jika persyaratan ini dapat diprediksi, seperti tempat yang mengalami terburu-buru penjualan tiket untuk acara populer, maka perilaku manajemen ini dapat diintegrasikan ke dalam aplikasi.

portal Microsoft Azure menyediakan pemantauan dan peringatan bawaan pada sebagian besar sumber daya. Pemantauan dan peringatan tersedia di database dan kumpulan. Pemantauan dan peringatan bawaan ini khusus sumber daya, sehingga nyaman digunakan untuk sejumlah kecil sumber daya, tetapi tidak terlalu nyaman ketika bekerja dengan banyak sumber daya.

Untuk skenario volume tinggi, tempat Anda bekerja dengan banyak sumber daya, log Azure Monitor dapat digunakan. Ini adalah layanan Azure terpisah yang menyediakan analitik melalui log yang dipancarkan yang dikumpulkan di ruang kerja Analitik Log. Log Azure Monitor dapat mengumpulkan telemetri dari banyak layanan dan digunakan untuk membuat kueri dan mengatur peringatan.

Dapatkan skrip aplikasi Database Wingtip Tickets SaaS Per Penyewa

Skrip Database Wingtip Tickets SaaS Per Penyewa dan kode sumber aplikasi tersedia di repositori GitHub WingtipTicketsSaaS-DbPerTenant. Lihat panduan umum untuk langkah-langkah mengunduh dan membuka blokir skrip Wingtip Ticket SaaS.

Menyediakan penyewa tambahan

Sementara kumpulan dapat hemat biaya hanya dengan dua database S3, semakin banyak database yang berada di kumpulan menjadi semakin hemat biaya efek rata-rata. Untuk pemahaman yang baik tentang bagaimana pemantauan performa dan manajemen bekerja dalam skala besar, tutorial ini mengharuskan Anda memiliki setidaknya 20 database yang diterapkan.

Jika Anda sudah menyediakan batch penyewa dalam tutorial sebelumnya, lewati ke bagian Simulasikan penggunaan pada semua database penyewa.

  1. Di ISE PowerShell, buka …\Learning Modules\Performance Monitoring and Management\Demo-PerformanceMonitoringAndManagement.ps1. Tetap buka skrip ini karena Anda akan menjalankan beberapa skenario selama tutorial ini.
  2. Set $DemoScenario = 1, Penyediaan batch penyewa
  3. Tekan F5 untuk menjalankan skrip.

Skrip ini akan menyebarkan 17 penyewa dalam waktu kurang dari lima menit.

Skrip Baru-TenantBatch menggunakan sekumpulan Resource Manager templat yang ditumpuk atau ditautkan untuk membuat batch penyewa, yang secara default menyalin database basetenantdb pada server katalog untuk membuat database penyewa baru, lalu mendaftarkannya di katalog, dan akhirnya menginisialisasinya dengan nama penyewa dan jenis tempat. Ini konsisten dengan cara aplikasi menyediakan penyewa baru. Setiap perubahan yang dilakukan pada basetenantdb diterapkan pada penyewa baru yang disediakan setelahnya. Lihat tutorial Manajemen Skema untuk melihat cara membuat perubahan skema ke database penyewa yang ada (termasuk database basetenantdb).

Menyimulasikan penggunaan di semua database penyewa

SkripDemo-PerformanceMonitoringAndManagement.ps1 disediakan yang mensimulasikan beban kerja yang berjalan melawan semua database penyewa. Beban dihasilkan menggunakan salah satu skenario beban yang tersedia:

Demo Skenario
2 Menghasilkan beban intensitas normal (sekitar 40 DTU)
3 Menghasilkan beban dengan semburan yang lebih lama dan lebih sering per database
4 Menghasilkan beban dengan semburan DTU yang lebih tinggi per database (sekitar 80 DTU)
5 Menghasilkan beban normal ditambah beban tinggi pada satu penyewa (sekitar 95 DTU)
6 Menghasilkan beban yang tidak seimbang di beberapa kumpulan

Generator beban menerapkan beban khusus CPU sintetis ke setiap database penyewa. Generator memulai pekerjaan untuk setiap database penyewa, yang memanggil prosedur yang disimpan secara berkala yang menghasilkan beban. Tingkat beban (dalam eDTUs), durasi, dan interval bervariasi di semua database, menyimulasikan aktivitas penyewa yang tidak dapat diprediksi.

  1. Di ISE PowerShell, buka …\Learning Modules\Performance Monitoring and Management\Demo-PerformanceMonitoringAndManagement.ps1. Tetap buka skrip ini karena Anda akan menjalankan beberapa skenario selama tutorial ini.
  2. Atur $DemoScenario = 2,Hasilkan beban intensitas normal.
  3. Tekan F5 untuk menerapkan muatan ke semua database penyewa Anda.

Wingtip Tickets SaaS Database Per Penyewa adalah aplikasi SaaS, dan beban dunia nyata pada aplikasi SaaS biasanya sporadis dan tidak dapat diprediksi. Untuk mensimulasikan ini, generator beban menghasilkan beban acak yang didistribusikan ke semua penyewa. Beberapa menit diperlukan agar pola beban muncul, jadi jalankan generator beban selama 3-5 menit sebelum mencoba memantau beban di bagian berikut.

Penting

Generator beban berjalan sebagai serangkaian pekerjaan di sesi PowerShell lokal Anda. Tetap buka tab Demo-PerformanceMonitoringAndManagement.ps1! Jika Anda menutup tab, atau menangguhkan mesin Anda, generator beban akan berhenti. Generator beban tetap dalam keadaan pemanggilan pekerjaan di mana ia menghasilkan beban pada penyewa baru yang disediakan setelah generator dimulai. Gunakan Ctrl-C untuk berhenti memanggil pekerjaan baru dan keluar dari skrip. Generator beban akan terus eksekusi alur, tetapi hanya pada penyewa yang ada.

Memantau penggunaan sumber daya menggunakan portal Microsoft Azure

Untuk memantau penggunaan sumber daya yang hasil dari beban yang diterapkan, buka portal ke kumpulan yang berisi database penyewa:

  1. Buka portal Microsoft Azure dan telusur ke server tenant1-dpt-<USER >.
  2. Gulir ke bawah dan temukan kumpulan elastis dan klik Pool1. Kumpulan ini berisi semua database penyewa yang dibuat sejauh ini.

Amati bagan pemantauan kumpulan elastisdan pemantauan database Elastis.

Pemanfaatan sumber daya kumpulan adalah pemanfaatan database agregat untuk semua database di kumpulan. Bagan database memperlihatkan lima database terpanas:

database chart

Karena ada database tambahan pada kumpulan di luar lima besar, pemanfaatan kumpulan menunjukkan aktivitas yang tidak tercermin dalam grafik lima database teratas. Untuk detail tambahan, klik Pemanfaatan Sumber Daya Database:

database resource utilization

Mengatur pemberitahuan performa pada kumpulan

Tetapkan peringatan pada kumpulan yang memicu > pemanfaatan 75% sebagai berikut:

  1. Buka Pool1 (di server tenants1-dpt-<pengguna>) di portal Microsoft Azure.

  2. Klik Aturan Peringatan, lalu klik + Tambahkan pemberitahuan:

    add alert

  3. Berikan nama, seperti High DTU,

  4. Tetapkan nilai berikut:

    • Metrik = persentase eDTU
    • Kondisi = lebih besar dari
    • Ambang batas = 75
    • Periode = Selama 30 menit terakhir
  5. Tambahkan alamat email ke kotak Email admin tambahan dan klik OK.

    set alert

Tingkatkan kumpulan yang sibuk

Jika tingkat beban agregat meningkat pada kumpulan sampai ke titik yang memaksimalkan kumpulan dan mencapai penggunaan eDTU 100%, maka performa database individual terpengaruh, berpotensi memperlambat waktu respons kueri untuk semua database di kumpulan.

Jangka pendek, pertimbangkan untuk meningkatkan kumpulan untuk menyediakan sumber daya tambahan, atau menghapus database dari kumpulan (memindahkannya ke kumpulan lain, atau keluar dari kumpulan ke tingkat layanan yang berdiri sendiri).

Jangka panjang, pertimbangkan untuk mengoptimalkan kueri atau penggunaan indeks untuk meningkatkan performa database. Tergantung pada sensitivitas aplikasi terhadap performa mengeluarkan praktik terbaiknya untuk meningkatkan skala kumpulan sebelum mencapai penggunaan eDTU 100%. Gunakan pemberitahuan untuk memperingatkan Anda terlebih dahulu.

Anda dapat mensimulasikan kumpulan yang sibuk dengan meningkatkan beban yang dihasilkan oleh generator. Dapat menyebabkan database lebih sering meledak, dan lebih lama, meningkatkan beban agregat pada kumpulan tanpa mengubah persyaratan database individu. Meningkatkan kumpulan mudah dilakukan di portal atau dari PowerShell. Latihan ini menggunakan portal.

  1. Atur $DemoScenario = 3, Hasilkan beban dengan ledakan yang lebih panjang dan lebih sering per database untuk meningkatkan intensitas beban agregat pada kumpulan tanpa mengubah beban puncak yang diperlukan oleh setiap database.

  2. Tekan F5 untuk menerapkan muatan ke semua database penyewa Anda.

  3. Buka ke Pool1 di portal Microsoft Azure.

Pantau peningkatan penggunaan kumpulan eDTU pada grafik atas. Dibutuhkan beberapa menit untuk beban baru yang lebih tinggi untuk menendang, tetapi Anda harus dengan cepat melihat kumpulan mulai mencapai utilisasi maks, dan ketika beban stabil ke dalam pola baru, itu dengan cepat membebani kumpulan.

  1. Untuk meningkatkan kumpulan, klik Konfigurasikan kumpulan di bagian atas halaman Pool1.
  2. Sesuaikan pengaturanPool eDTU menjadi 100. Mengubah kumpulan eDTU tidak mengubah pengaturan per database (yang mana masih 50 eDTU maks per data). Anda bisa melihat pengaturan per database di sisi kanan halaman Konfigurasi kumpulan.
  3. Klik Simpan untuk mengirimkan permintaan untuk menskalakan kumpulan.

Kembali ke Pool1>Ringkasan untuk melihat bagan pemantauan. Pantau efek menyediakan kumpulan dengan lebih banyak sumber daya (meskipun dengan beberapa database dan beban acak tidak selalu mudah dilihat secara meyakinkan sampai Anda berjalan selama beberapa waktu). Saat Anda melihat grafik ingat bahwa 100% pada bagan atas sekarang mewakili 100 eDTUs, sementara pada bagan bawah 100% masih 50 eDTUs karena maks per database masih 50 eDTUs.

Database tetap online dan sepenuhnya tersedia selama proses. Pada saat terakhir karena setiap database siap diaktifkan dengan eDTU kumpulan baru, koneksi aktif apa pun rusak. Kode aplikasi harus selalu ditulis untuk mencoba kembali koneksi yang lemah, dan begitu juga akan terhubung kembali ke database di kumpulan yang diperskalakan.

Memuat keseimbangan antar kumpulan

Sebagai alternatif untuk meningkatkan skala kumpulan, buat kumpulan kedua dan pindahkan database ke dalamnya untuk menyeimbangkan beban di antara kedua kumpulan. Untuk melakukan ini, kumpulan baru harus dibuat pada server yang sama dengan yang pertama.

  1. Di portal Microsoft Azure , buka serverusertenants1-dpt-<USER>.

  2. Klik + Kumpulan baru untuk membuat kumpulan di server saat ini.

  3. Pada templat kumpulan Elastis:

    1. Atur Nama ke Pool2.

    2. Biarkan tingkat harga sebagai Kumpulan Standar.

    3. Klik Konfigurasi kumpulan,

    4. Atur Kumpulan eDTU ke 50 eDTU.

    5. Klik Tambahkan database untuk melihat daftar database di server yang bisa ditambahkan ke Pool2.

    6. Pilih 10 database untuk memindahkan ini ke kumpulan baru, lalu klik Pilih. Jika Anda telah menjalankan generator beban, layanan sudah tahu bahwa profil performa Anda memerlukan kumpulan yang lebih besar daripada ukuran default 50 eDTU dan direkomendasikan mulai dengan pengaturan 100 eDTU.

      recommendation

    7. Untuk tutorial ini, biarkan default di 50 eDTUs, dan klik Pilih Lagi.

    8. Pilih OK untuk membuat kumpulan baru dan untuk memindahkan database yang dipilih ke dalamnya.

Membuat kumpulan dan memindahkan database membutuhkan waktu beberapa menit. Ketika database dipindahkan, mereka tetap online dan sepenuhnya dapat diakses sampai saat terakhir, di mana setiap koneksi terbuka ditutup. Selama Anda memiliki beberapa logika coba lagi, klien kemudian akan terhubung ke database di kumpulan baru.

Jelajahi Pool2 (di server tenants1-dpt-<pengguna>) untuk membuka kumpulan dan memantau performanya. Jika Anda tidak melihatnya, tunggu penyediaan kumpulan baru selesai.

Anda sekarang melihat bahwa penggunaan sumber daya di Pool1 telah turun dan pool2 sekarang sama-sama dimuat.

Mengelola performa database individual

Jika database individual dalam kumpulan mengalami beban tinggi yang berkelanjutan, tergantung pada konfigurasi kumpulan, database mungkin cenderung mendominasi sumber daya di kumpulan dan berdampak pada database lain. Jika aktivitas kemungkinan akan berlanjut untuk beberapa waktu, database dapat dipindahkan sementara dari kumpulan. Ini memungkinkan database untuk memiliki sumber daya tambahan yang dibutuhkan, dan mengisolasinya dari database lain.

Latihan ini mensimulasikan efek Contoso Concert Hall mengalami beban tinggi ketika tiket mulai dijual untuk konser yang populer.

  1. Di ISE PowerShell, buka skrip …\Demo-PerformanceMonitoringAndManagement.ps1.

  2. Atur $DemoScenario = 5, Hasilkan beban normal ditambah beban tinggi pada satu penyewa (sekitar 95 DTU).

  3. Atur $SingleTenantDatabaseName = contosoconcerthall

  4. Jalankan skrip menggunakan F5.

  5. Di portal Microsoft Azure, telusuri daftar database di server tenants1-dpt-<pengguna>.

  6. Klik pada database contosoconcerthall.

  7. Klik pada kumpulan yang contosoconcerthall masuk. Temukan kumpulan renang di bagian kumpulan Elastis.

  8. Periksa bagan pemantauan kumpulan elastis dan cari peningkatan penggunaan kumpulan eDTU. Setelah satu atau dua menit, beban yang lebih tinggi harus mulai aktif, dan Anda harus dengan cepat melihat bahwa kumpulan mencapai pemanfaatan 100%.

  9. Periksa tampilan pemantauan database Elastis, yang memperlihatkan database terpanas dalam satu jam terakhir. Database contosoconcerthall akan segera muncul sebagai salah satu dari lima database terpanas.

  10. Klik pada pemantauan database Elastisbagan dan tindakan tersebut akan membuka halaman Pemanfaatan Sumber Daya Database tempat Anda dapat memantau database mana pun. Ini memungkinkan Anda mengisolasi layar untuk database contosoconcerthall.

  11. Dari daftar database, klik contosoconcerthall.

  12. Klik Tingkat Harga (DPU skala) untuk membuka halaman Konfigurasi performa di mana Anda dapat mengatur ukuran komputasi yang berdiri sendiri untuk database.

  13. Klik pada tab Standar untuk membuka opsi skala di tingkat Standar.

  14. Geser penggeser DTU ke kanan untuk memilih 100 DTUs. Perhatikan ini sesuai dengan tujuan layanan, S3.

  15. Klik Terapkan untuk memindahkan database keluar dari kumpulan dan menjadikannya database S3 Standar.

  16. Setelah penskalaan selesai, pantau efek pada database contosoconcerthall dan Pool1 pada kumpulan elastis dan bilah database.

Setelah beban tinggi pada database contosoconcerthall mereda, Anda harus segera mengembalikannya ke kumpulan untuk mengurangi bebannya. Jika tidak jelas kapan itu akan terjadi, Anda dapat mengatur pemberitahuan pada database yang akan memicu ketika penggunaan DTU turun di bawah maks per database pada kumpulan. Memindahkan database ke dalam kumpulan dijelaskan dalam latihan 5.

Pola manajemen performa lainnya

Penskalaan pre-emptive Dalam latihan di atas tempat Anda menjelajahi cara menskalakan database yang terisolasi, Anda tahu database mana yang harus dicari. Jika manajemen Contoso Concert Hall telah memberi tahu Wingtips tentang penjualan tiket yang akan datang, database bisa saja dipindahkan dari kumpulan secara preemtif. Jika tidak, kemungkinan akan memerlukan peringatan di kumpulan atau database untuk melihat apa yang terjadi. Anda tidak ingin mempelajari hal ini dari penyewa lain di kumpulan yang mengeluhkan penurunan performa. Dan jika penyewa dapat memprediksi berapa lama mereka akan membutuhkan sumber daya tambahan, Anda dapat menyiapkan runbook Azure Automation untuk memindahkan database keluar dari kumpulan dan kemudian kembali lagi pada jadwal yang ditentukan.

Penskalaan pelayanan-sendiri untuk penyewa Karena penskalaan adalah tugas yang mudah dipanggil melalui API manajemen, Anda dapat dengan mudah membangun kemampuan untuk menskalakan database penyewa ke dalam aplikasi yang menghadap penyewa Anda, dan menawarkannya sebagai fitur layanan SaaS Anda. Misalnya, biarkan penyewa mengelola sendiri penskalaan naik dan turun, mungkin terkait langsung dengan penagihan mereka!

Menskalakan kumpulan naik dan turun pada jadwal untuk mencocokkan pola penggunaan

Jika penggunaan penyewa agregat mengikuti pola penggunaan yang dapat diprediksi, Anda dapat menggunakan Azure Automation untuk menskalakan kumpulan naik dan turun sesuai jadwal. Misalnya, skala kumpulan renang turun setelah jam 6 sore dan naik lagi sebelum jam 6 pagi pada hari kerja ketika Anda tahu ada penurunan kebutuhan sumber daya.

Langkah berikutnya

Dalam tutorial ini, Anda akan mempelajari cara:

  • mensimulasikan penggunaan pada database penyewa dengan menjalankan generator beban yang disediakan
  • Memantau database penyewa saat merespons peningkatan beban
  • Meningkatkan kumpulan Elastis sebagai respons terhadap peningkatan beban database
  • Menyediakan kumpulan Elastis kedua untuk menyeimbangkan muatan aktivitas database

Memulihkan tutorial penyewa tunggal

Sumber daya tambahan