Bagikan melalui


WebLimits <Batas Web>

Gambaran Umum

Elemen <webLimits> menentukan koneksi TCP/IP dan batas bandwidth.

Setiap 60 detik, proses pekerja memeriksa berapa lama proses tersebut menganggur. Jika waktu diamnya saat ini lebih besar dari nilai batas waktu diam yang ditentukan oleh Layanan Aktivasi Proses Windows (WAS), proses pekerja memulai pematian. Ketika Anda menentukan nilai bukan nol untuk atribut dynamicIdleThreshold , WAS akan secara dinamis mengurangi batas waktu menganggur ini tergantung pada jumlah RAM yang digunakan.

Atribut dynamicIdleThreshold mewakili jumlah RAM fisik yang diterapkan. Misalnya, jika server Anda memiliki memori fisik 2 gigabyte (GB) yang diinstal dan Anda mengatur nilai atribut dynamicIdleThreshold ke 200, Anda telah menerapkan 200 persen (4 GB) RAM fisik untuk digunakan. Menurut tabel berikut, ketika 80 persen dari 4 GB, yaitu, 160 persen (3,2 GB) RAM fisik dialokasikan, WAS akan mulai mengurangi batas waktu menganggur dari semua proses pekerja sebesar 50 persen.

Tabel berikut mencantumkan pengurangan batas waktu diam yang terjadi pada persentase yang telah ditentukan dari nilai dynamicIdleThreshold .

Dynamic idle threshold percentage reached Dynamic idle time-out reduction
75 atau lebih rendah WAS menggunakan pengaturan batas waktu menganggur asli.
80 WAS menetapkan batas waktu diam menjadi setengah dari nilai asli untuk semua proses pekerja yang memiliki batas waktu diam yang dikonfigurasi.
85 WAS menetapkan batas waktu menganggur ke seperempat dari nilai asli untuk semua proses pekerja yang memiliki batas waktu diam yang dikonfigurasi.
90 WAS menetapkan batas waktu menganggur ke seperdelapan dari nilai asli untuk semua proses pekerja yang memiliki batas waktu diam yang dikonfigurasi.
95 WAS menetapkan batas waktu menganggur ke seperenam belas dari nilai asli untuk semua proses pekerja yang memiliki batas waktu diam yang dikonfigurasi.
100 WAS menetapkan batas waktu diam menjadi satu tiga puluh detik dari nilai asli untuk semua proses pekerja yang memiliki batas waktu diam yang dikonfigurasi.

Aktivasi Situs Dinamis

Aktivasi situs dinamis membantu IIS mengatasi masalah skalabilitas dengan memungkinkan Anda menangguhkan aktivasi situs Web. Ketika jumlah situs Web lebih besar dari batas, IIS tidak akan mengaktifkan situs apa pun ketika layanan dimulai. Ini tidak akan membuat antrean dan pengikatan untuk setiap situs yang dikonfigurasi saat startup, seperti yang sebelumnya dilakukan di IIS 8.0 dan yang lebih lama. Sebaliknya, ia membuat satu antrean yang mendengarkan permintaan untuk semua situs, dan memiliki satu pengikatan. WAS memuat daftar situs, pengikatannya, aplikasi mereka, kumpulan aplikasi mereka, dan pengaturan kumpulan aplikasi mereka. Ketika permintaan situs tiba, IIS menggunakan daftar tersebut untuk membuat antrean dan mendaftarkan pengikatan untuk situs tersebut. Pada saat itu, HTTP.sys menempatkan permintaan dalam antrean, WAS memulai proses pekerja, dan permintaan diproses.

Dengan aktivasi situs dinamis, layanan IIS kemungkinan akan dimulai lebih cepat dan mengonsumsi lebih sedikit memori. IIS juga harus membutuhkan waktu yang jauh lebih sedikit untuk memulai ulang karena tidak perlu merilis semua antrean dan pengikatan terdaftar dengan HTTP. Aktivasi dalam konteks ini mengacu pada proses di mana IIS mendaftarkan situs dengan tumpukan protokol HTTP (HTTP.sys). Aktivasi ini tidak sama dengan membuat proses pekerja, yang hanya terjadi ketika permintaan situs diterima.

Aktivasi situs dinamis diaktifkan ketika jumlah situs yang ditangani oleh server lebih besar dari batas yang telah ditetapkan sebelumnya. Secara default, batas itu adalah 100. Jika Anda tidak mengubah nilai tersebut, situs akan diaktifkan secara dinamis di server yang menghosting lebih dari 100 situs. Untuk situs 100 atau lebih sedikit, di sisi lain, semua situs akan diaktifkan saat startup. Anda dapat mengubah batas tersebut dengan mengubah atribut dynamicRegistrationThreshold. Perhatikan bahwa perolehan performa untuk server dengan jumlah situs yang lebih rendah akan lebih kecil daripada dengan situs yang jauh lebih banyak.

Catatan

Ketika aktivasi situs Dinamis diaktifkan, pengguna tidak diizinkan untuk menggunakan alamat IP untuk mengirim permintaan web. Misalnya, jika pengguna mencoba menelusuri ke HTTP://127.0.0.1, mereka akan menerima Kesalahan 400 Permintaan Buruk.

Kompatibilitas

Versi Catatan
IIS 10.0 Elemen <webLimits> tidak dimodifikasi di IIS 10.0.
IIS 8.5 Atribut dynamicRegistrationThreshold ditambahkan di IIS 8.5.
IIS 8.0 Elemen <webLimits> tidak dimodifikasi di IIS 8.0.
IIS 7.5 Elemen <webLimits> tidak dimodifikasi dalam IIS 7.5.
IIS 7.0 Elemen <webLimits> ini diperkenalkan di IIS 7.0.
IIS 6.0 Elemen <webLimits> menggantikan pengaturan metabase IIS 6.0 berikut:
  • ConnectionTimeout
  • HeaderWaitTimeout
  • MaxGlobalBandwidth
  • MinFileBytesPerSec

Siapkan

Elemen <webLimits> ini disertakan dalam penginstalan default IIS 7 dan yang lebih baru.

Bagaimana Caranya

Cara mengonfigurasi batas bawah aktivasi situs dinamis

  1. Buka Manajer Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
  2. Di panel Koneksi , pilih server, lalu klik dua kali Editor Konfigurasi di area Manajemen .

  3. Di Editor Konfigurasi, untuk Bagian, perluas system.applicationHost, lalu pilih webLimits.

  4. Masukkan nilai untuk dynamicRegistrationThreshold.

  5. Di panel Tindakan , klik Terapkan.

    Cuplikan layar memperlihatkan cara mengonfigurasi aktivasi situs dinamis menggunakan Editor Konfigurasi.

Konfigurasi

Atribut

Atribut Deskripsi
connectionTimeout Atribut timeSpan opsional.

Menentukan waktu IIS menunggu sebelum memutuskan koneksi yang dianggap tidak aktif.

Nilai defaultnya adalah 00:02:00.
demandStartThreshold Atribut uint opsional.

Menentukan jumlah maksimum proses pekerja yang diizinkan untuk berjalan bersamaan pada server Web. Anda dapat menggunakan properti ini untuk mencegah server IIS menjadi tidak responsif ketika terlalu banyak proses pekerja telah dimulai.

Nilai defaultnya adalah 2147483647.
dynamicIdleThreshold Atribut uint opsional.

Menentukan persentase RAM fisik yang diterapkan. Rentang bilangan bulat yang valid adalah dari 0 hingga 10000. WAS menggunakan nilai ambang ini untuk secara dinamis mempersingkat batas waktu diam proses pekerja. Untuk informasi lebih lanjut, lihat bagian Keterangan.

Nilai defaultnya adalah 0.
dynamicRegistrationThreshold Atribut uint opsional.

Menentukan batas bawah aktivasi situs dinamis. Ketika jumlah situs Web yang dikonfigurasi pada server melebihi nilai atribut ini, layanan tidak akan mengaktifkan semua situs ketika layanan dimulai. Sebaliknya, IIS akan mengaktifkan setiap situs ketika menerima permintaan pertama untuk situs tersebut. Ketika jumlah situs yang dikonfigurasi kurang dari atau sama dengan nomor ini, semua situs Web yang dikonfigurasi akan diaktifkan ketika layanan dimulai.

Jumlah sumber daya sistem yang diperlukan oleh IIS lebih rendah ketika situs diaktifkan secara individual, terutama jika sejumlah besar situs jarang diakses. Permintaan pertama ke situs mungkin membutuhkan lebih banyak waktu karena situs diaktifkan, tetapi akses berikutnya akan merespons secara normal.

Nilai defaultnya adalah 100.
headerWaitTimeout Atribut timeSpan opsional.

Menentukan waktu server menunggu semua header HTTP agar permintaan diterima sebelum memutuskan sambungan klien. Tujuan dari atribut ini adalah untuk membantu mencegah varian umum serangan Denial of Service (DoS) yang mencoba memaksimalkan batas koneksi dan menjaga koneksi tersebut tetap terhubung.

Nilai defaultnya adalah 00:00:00.
maxGlobalBandWidth Atribut uint opsional.

Menentukan total bandwidth maksimum untuk server. Mengatur nilai ke 0 memungkinkan bandwidth tidak terbatas untuk server.

Nilai defaultnya adalah 4294967295.
minBytesPerSecond Atribut uint opsional.

Menentukan tingkat throughput minimum, dalam byte, yang HTTP.sys berlaku saat mengirim respons ke klien. Atribut minBytesPerSecond mencegah klien perangkat lunak berbahaya atau tidak berfungsi menggunakan sumber daya dengan menahan koneksi terbuka dengan data minimal. Jika tingkat throughput lebih rendah dari pengaturan minBytesPerSecond , koneksi dihentikan.

Implementasi saat ini hanya mengakhiri koneksi setelah waktu yang diperlukan untuk mengalirkan seluruh respons kembali ke klien yang terhubung pada tingkat transfer bandwidth minimum telah berlalu. Jika tingkat transfer berada di bawah nilai yang ditentukan oleh minBytesPerSecond hanya untuk jangka waktu yang kecil, tetapi tingkat transfer keseluruhan lebih tinggi, koneksi tidak akan dihentikan.

Nilai defaultnya adalah 240.

Elemen Anak

Tidak ada.

Sampel Konfigurasi

Sampel konfigurasi berikut mengatur batas waktu koneksi menjadi 1 menit, persentase RAM fisik yang diterapkan menjadi 150, waktu tunggu header habis hingga 30 detik, dan tingkat throughput minimum yang diizinkan hingga 500 byte per detik.

<configuration>
   <system.applicationHost>
      <webLimits connectionTimeout="00:01:00"
         dynamicIdleThreshold="150"
         headerWaitTimeout="00:00:30"
         minBytesPerSecond="500"
      />
   </system.applicationHost>
</configuration>

Kode Sampel

Sampel kode berikut mengatur batas waktu koneksi menjadi 1 menit, persentase RAM fisik yang diterapkan menjadi 150, waktu tunggu header habis hingga 30 detik, dan tingkat throughput minimum yang diizinkan hingga 500 byte per detik.

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/webLimits /connectionTimeout:"00:01:00" /commit:apphost
appcmd.exe set config -section:system.applicationHost/webLimits /dynamicIdleThreshold:"150" /commit:apphost
appcmd.exe set config -section:system.applicationHost/webLimits /headerWaitTimeout:"00:00:30" /commit:apphost
appcmd.exe set config -section:system.applicationHost/webLimits /minBytesPerSecond:"500" /commit:apphost

Catatan

Anda harus memastikan untuk mengatur parameter penerapan ke apphost saat Anda menggunakan AppCmd.exe untuk mengonfigurasi pengaturan ini. Ini menerapkan pengaturan konfigurasi ke bagian lokasi yang sesuai dalam file ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection webLimitsSection = config.GetSection("system.applicationHost/webLimits");

         webLimitsSection["connectionTimeout"] = TimeSpan.Parse("00:01:00");
         webLimitsSection["dynamicIdleThreshold"] = 150;
         webLimitsSection["headerWaitTimeout"] = TimeSpan.Parse("00:00:30");
         webLimitsSection["minBytesPerSecond"] = 500;

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim webLimitsSection As ConfigurationSection = config.GetSection("system.applicationHost/webLimits")

      webLimitsSection("connectionTimeout") = TimeSpan.Parse("00:01:00")
      webLimitsSection("dynamicIdleThreshold") = 150
      webLimitsSection("headerWaitTimeout") = TimeSpan.Parse("00:00:30")
      webLimitsSection("minBytesPerSecond") = 500

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var webLimitsSection = adminManager.GetAdminSection("system.applicationHost/webLimits", "MACHINE/WEBROOT/APPHOST");
webLimitsSection.Properties.Item("connectionTimeout").Value = "00:01:00";
webLimitsSection.Properties.Item("dynamicIdleThreshold").Value = 150;
webLimitsSection.Properties.Item("headerWaitTimeout").Value = "00:00:30";
webLimitsSection.Properties.Item("minBytesPerSecond").Value = 500;

adminManager.CommitChanges();

Vbscript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set webLimitsSection = adminManager.GetAdminSection("system.applicationHost/webLimits", "MACHINE/WEBROOT/APPHOST")
webLimitsSection.Properties.Item("connectionTimeout").Value = "00:01:00"
webLimitsSection.Properties.Item("dynamicIdleThreshold").Value = 150
webLimitsSection.Properties.Item("headerWaitTimeout").Value = "00:00:30"
webLimitsSection.Properties.Item("minBytesPerSecond").Value = 500

adminManager.CommitChanges()