Memproses Pengaturan Model untuk ProcessModel Kumpulan <Aplikasi>
Gambaran Umum
Dengan menggunakan elemen , <processModel>
Anda dapat mengonfigurasi banyak fitur keamanan, performa, kesehatan, dan keandalan kumpulan aplikasi pada IIS 7 dan yang lebih baru. Ini mencakup fitur-fitur berikut:
- Identitas kumpulan aplikasi, yang merupakan nama layanan atau akun pengguna tempat proses pekerja kumpulan aplikasi berjalan. Ini didefinisikan oleh atribut identityType . Secara default, mulai dari IIS 7.5 kumpulan aplikasi berjalan di bawah akun ApplicationPoolIdentity bawaan , yang dibuat secara dinamis oleh Windows Process Activation Service (WAS). (Di IIS 7.0 identitas default adalah akun NetworkService .) Anda dapat mengubah nilai atribut identityType ke akun NetworkService bawaan, akun LocalService , akun LocalSystem bawaan, atau akun kustom yang Anda buat. Jika Anda memilih akun kustom, tentukan kredensial akun menggunakan atribut userName dan password . Namun, ketahuilah bahwa akun NetworkService, LocalService , dan LocalSystem memiliki lebih banyak hak pengguna daripada akun ApplicationPoolIdentity . (Peringatan: Ini adalah risiko keamanan serius untuk menjalankan kumpulan aplikasi menggunakan hak pengguna tingkat tinggi.) Selain itu, Anda dapat menggunakan atribut logonType untuk menentukan apakah identitas proses harus masuk sebagai pengguna atau layanan batch. (Untuk informasi tambahan tentang jenis masuk, lihat artikel Fungsi LogonUser .)
- Berkebun web dan penggunaan perangkat keras Akses Memori Non-Seragam (NUMA), yang dapat Anda konfigurasi dengan mengatur atribut maxProcesses . Untuk berkebun Web, lihat maxProcesses ke nilai yang lebih besar dari satu. Untuk penggunaan perangkat keras NUMA, atur maxProcesses ke nilai "0" untuk menentukan bahwa IIS menjalankan jumlah proses pekerja yang sama karena ada simpul NUMA.
- Pengaturan batas waktu diam, yang memungkinkan Anda mengatur berapa lama proses pekerja tetap menganggur sebelum dimatikan. Edit atribut idleTimeout untuk mengonfigurasi pengaturan ini.
- Pemantauan kesehatan dengan mengaktifkan ping terhadap proses pekerja, waktu maksimum yang diizinkan bagi proses pekerja untuk merespons ping, dan frekuensi ping yang dikirim ke proses pekerja untuk memantau kesehatannya. Edit atribut pingEnabled, pingInterval, dan pingResponseTime untuk mengonfigurasi pengaturan ini.
- Batas waktu penonaktifan dan pengaktifan proses pekerja. Batas pertama ditetapkan oleh atribut shutdownTimeLimit dan menentukan interval bahwa IIS 7 dan yang lebih baru memberikan proses pekerja untuk menyelesaikan semua permintaan sebelum layanan WWW mengakhiri proses pekerja. Batas kedua ditetapkan oleh atribut startupTimeLimit dan menentukan jumlah waktu IIS 7 dan yang lebih baru memungkinkan kumpulan aplikasi untuk memulai.
Kompatibilitas
Versi | Catatan |
---|---|
IIS 10.0 | Elemen <processModel> tidak dimodifikasi di IIS 10.0. |
IIS 8.5 | Atribut idleTimeoutAction ditambahkan memungkinkan proses pekerja yang menganggur selama durasi idleTimeout atribut dihentikan atau ditangguhkan, bukan hanya dihentikan. |
IIS 8.0 | Atribut setProfileEnvironment ditambahkan yang memungkinkan lingkungan diatur berdasarkan profil pengguna untuk proses baru. Nilai ditambahkan untuk maxProcesses atribut , termasuk dukungan untuk Akses Memori Non-Seragam (NUMA). Atribut logEventOnProcessModel ditambahkan untuk menentukan tindakan yang diambil dalam proses dicatat. |
IIS 7.5 | Elemen <processModel> <add> elemen diperbarui di IIS 7.5 untuk menyertakan pengaturan yang memungkinkan Anda menjalankan aplikasi menggunakan ApplicationPoolIdentity baru dan menentukan jenis login untuk identitas proses. |
IIS 7.0 | Elemen <processModel> ini diperkenalkan di IIS 7.0. |
IIS 6.0 | Elemen menggantikan <processModel> beberapa pengaturan di objek metabase IIS 6.0 IIsApplicationPools . |
Siapkan
Koleksi <applicationPools>
disertakan dalam penginstalan default IIS 7 dan yang lebih baru.
Bagaimana Caranya
Cara mengedit pengaturan konfigurasi model proses
Buka Manajer Layanan Informasi Internet (IIS):
Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:
- Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Manajer Layanan Informasi Internet (IIS).
Jika Anda menggunakan Windows 8 atau 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).
Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:
- Pada taskbar, klik Mulai, arahkan ke Alat Administratif, lalu klik Manajer Layanan Informasi Internet (IIS).
Jika Anda menggunakan Windows Vista atau Windows 7:
- Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
- Klik dua kali Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
Di panel Koneksi , perluas nama server, klik Kumpulan Aplikasi, dan klik kumpulan aplikasi yang ingin Anda edit.
Di panel Tindakan , klik Pengaturan Tingkat Lanjut...
Dalam kotak dialog Pengaturan Tingkat Lanjut , klik properti model proses yang ingin Anda edit, lalu edit di bagian nilai properti dari kotak dialog, lalu klik OK. Misalnya, ubah Batas Waktu Matikan (detik) dan Batas Waktu Mulai (detik) menjadi 30.
Cara mengonfigurasi IIS untuk digunakan dengan perangkat keras Non-Uniform Memory Access (NUMA)
Buka Manajer Layanan Informasi Internet (IIS):
Jika Anda menggunakan Windows Server 2012 atau yang lebih baru:
- Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Manajer Layanan Informasi Internet (IIS).
Jika Anda menggunakan Windows 8 atau yang lebih baru:
- Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
- Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
Di panel Koneksi , perluas nama server, lalu klik Kumpulan Aplikasi.
Di panel Kumpulan Aplikasi , pilih kumpulan yang ingin Anda konfigurasi untuk NUMA.
Di panel Tindakan , pilih Pengaturan Tingkat Lanjut.
Di bawah panel Model Proses , atur Proses Pekerja Maksimum ke
0
.
Cara mengonfigurasi tindakan batas waktu diam
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).
Di panel Koneksi , klik dua kali nama server, klik dua kali Kumpulan Aplikasi, lalu pilih kumpulan aplikasi untuk dikonfigurasi.
Di panel Tindakan , klik Pengaturan Tingkat Lanjut.
Di bagian Model Proses dari kotak dialog Pengaturan Tingkat Lanjut , untuk idleTimeoutAction, pilih Hentikan atau Tangguhkan.
Klik OK.
Konfigurasi
Anda mengonfigurasi <processModel>
elemen di tingkat server dalam file ApplicationHost.config.
Atribut
Atribut | Deskripsi | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
identityType |
Atribut enum opsional. Menentukan identitas akun tempat kumpulan aplikasi berjalan. Catatan: Mulai dari IIS 7.5, nilai defaultnya adalah ApplicationPoolIdentity. (Di IIS 7.0 nilai defaultnya adalah NetworkService .)Atribut identityType dapat menjadi salah satu nilai yang mungkin berikut; defaultnya adalah NetworkService .
|
||||||||||||
idleTimeout |
Atribut timeSpan opsional. Menentukan berapa lama (dalam menit) proses pekerja harus berjalan diam jika tidak ada permintaan baru yang diterima dan proses pekerja tidak memproses permintaan. Setelah waktu yang dialokasikan berlalu, proses pekerja harus meminta agar dimatikan oleh layanan WWW. Nilai defaultnya adalah 00:20:00 . Untuk menonaktifkan fitur batas waktu diam, atur nilai ini ke 00:00:00 . |
||||||||||||
idleTimeoutAction |
Atribut enum opsional. Menentukan tindakan yang akan dilakukan ketika durasi batas waktu diam telah tercapai. Sebelum IIS 8.5, proses pekerja yang diam selama durasi idleTimeout atribut akan dihentikan. Setelah IIS 8.5, Anda memiliki pilihan untuk mengakhiri proses pekerja yang mencapai idleTimeout batas, atau menangguhkannya dengan memindahkannya dari memori ke disk. Menangguhkan proses kemungkinan akan memakan waktu lebih sedikit dan mengonsumsi lebih sedikit memori daripada mengakhirinya.Anda dapat mengonfigurasi tindakan batas waktu diam ditangguhkan dengan permintaan palsu inisialisasi aplikasi (lihat applicationInitialization .Atribut idleTimeoutAction dapat memiliki nilai yang mungkin berikut. Nilai defaultnya adalah Terminate .
|
||||||||||||
loadUserProfile |
Atribut Boolean opsional. Menentukan apakah IIS memuat profil pengguna untuk identitas kumpulan aplikasi. Mengatur nilai ini ke false menyebabkan IIS kembali ke perilaku IIS 6.0. IIS 6.0 tidak memuat profil pengguna untuk identitas kumpulan aplikasi. Nilai defaultnya adalah false . |
||||||||||||
logEventOnProcessModel |
Atribut bendera opsional. Menentukan tindakan mana yang diambil dalam proses yang dicatat ke Pemantau Peristiwa. Di IIS 8.0, satu-satunya tindakan yang berlaku adalah tindakan batas waktu diam, di mana proses dihentikan karena diam untuk periode idleTimeout. Nama bendera sama dengan IdleTimeout . Nilainya adalah 1 .Nilai defaultnya adalah IdleTimeout . |
||||||||||||
logonType |
Atribut enum opsional. Menentukan jenis masuk untuk identitas proses. (Untuk informasi tambahan tentang jenis masuk, lihat artikel Fungsi LogonUser .) Catatan: Atribut ini diperkenalkan di IIS 7.5. Atribut logonType dapat menjadi salah satu nilai yang mungkin berikut; defaultnya adalah LogonBatch .
|
||||||||||||
manualGroupMembership |
Atribut Boolean opsional. Menentukan apakah Pengidentifikasi Keamanan (SID) grup IIS_IUSRS ditambahkan ke token proses pekerja. Ketika false, IIS secara otomatis menggunakan identitas kumpulan aplikasi seolah-olah itu adalah anggota grup IIS_IUSRS bawaan, yang memiliki akses ke file dan sumber daya sistem yang diperlukan. Jika true, identitas kumpulan aplikasi harus secara eksplisit ditambahkan ke semua sumber daya yang diperlukan proses pekerja pada runtime. Nilai defaultnya adalah false . |
||||||||||||
maxProcesses |
Atribut uint opsional. Menunjukkan jumlah maksimum proses pekerja yang akan digunakan untuk kumpulan aplikasi.
1 . |
||||||||||||
password |
Atribut string opsional. Menentukan kata sandi yang terkait dengan atribut userName . Atribut ini hanya diperlukan ketika nilai identityType adalah SpecificUser. Catatan: Untuk menghindari penyimpanan string kata sandi yang tidak terenkripsi dalam file konfigurasi, selalu gunakan AppCmd.exe atau IIS Manager untuk memasukkan kata sandi. Jika Anda menggunakan alat manajemen ini, string kata sandi akan dienkripsi secara otomatis sebelum ditulis ke file konfigurasi XML. Ini memberikan keamanan kata sandi yang lebih baik daripada menyimpan kata sandi yang tidak terenkripsi. |
||||||||||||
pingingEnabled |
Atribut Boolean opsional. Menentukan apakah ping diaktifkan untuk proses pekerja. Nilai defaultnya adalah true . |
||||||||||||
pingInterval |
Atribut timeSpan opsional. Menentukan waktu antara ping pemantauan kesehatan yang dikirim layanan WWW ke proses pekerja. Nilai defaultnya adalah 00:00:30 (30 detik). |
||||||||||||
pingResponseTime |
Atribut timeSpan opsional. Menentukan waktu saat proses pekerja diberikan untuk merespons ping pemantauan kesehatan. Setelah batas waktu terlampaui, layanan WWW mengakhiri proses pekerja. Nilai defaultnya adalah 00:01:30 (1 menit 30 detik). |
||||||||||||
requestQueueDelegatorIdentity |
Atribut String Opsional. Menentukan identitas akun yang memiliki izin untuk mendelegasikan permintaan HTTP ke kumpulan aplikasi. Catatan: Atribut ini tidak tersedia di UI Pengelola Layanan Informasi Internet (IIS). |
||||||||||||
setProfileEnvironment |
Atribut Boolean opsional. Ketika setProfileEnvironment diatur ke True , WAS membuat blok lingkungan untuk diteruskan ke CreateProcessAsUser saat membuat proses pekerja. Ini memastikan bahwa lingkungan diatur berdasarkan profil pengguna untuk proses baru.Nilai defaultnya adalah True . |
||||||||||||
shutdownTimeLimit |
Atribut timeSpan opsional. Menentukan waktu tunggu layanan W3SVC setelah memulai daur ulang. Jika proses pekerja tidak dimatikan dalam shutdownTimeLimit, proses tersebut akan dihentikan oleh layanan W3SVC. Nilai defaultnya adalah 00:01:30 (1 menit 30 detik). |
||||||||||||
startupTimeLimit |
Atribut timeSpan opsional. Menentukan waktu IIS menunggu kumpulan aplikasi dimulai. Jika kumpulan aplikasi tidak memulai dalam startupTimeLimit, proses pekerja dihentikan dan jumlah perlindungan yang gagal cepat bertambah. Nilai defaultnya adalah 00:01:30 (1 menit 30 detik). |
||||||||||||
userName |
Atribut string opsional. Menentukan identitas tempat kumpulan aplikasi berjalan saat identityType adalah SpecificUser. |
Elemen Anak
Tidak ada.
Sampel Konfigurasi
Sampel konfigurasi berikut menggunakan elemen kumpulan <add>
aplikasi untuk membuat kumpulan aplikasi baru bernama Contoso. Elemen <recycling>
mengonfigurasi pengelogan untuk restart kumpulan aplikasi, <periodicRestart>
elemen dikonfigurasi saat kumpulan aplikasi dimulai ulang, dan <processModel>
elemen mengonfigurasi atribut shutdownTimeLimit dan startupTimeLimit untuk mematikan dan memulai proses pekerja di kumpulan aplikasi masing-masing selama 30 detik. Jika batas waktu ini terlampaui, IIS mengakhiri proses pekerja.
<add name="Contoso">
<recycling logEventOnRecycle="Schedule">
<periodicRestart>
<schedule>
<clear />
<add value="03:00:00" />
</schedule>
</periodicRestart>
</recycling>
<processModel identityType="NetworkService" shutdownTimeLimit="00:00:30" startupTimeLimit="00:00:30" />
</add>
Kode Sampel
Contoh berikut mengubah nilai properti processModel.shutdownTimeLimit dan processModule.startupTimeLimit menjadi 30 detik masing-masing untuk kumpulan aplikasi bernama Contoso.
AppCmd.exe
appcmd.exe set apppool "Contoso" /processModel.shutdownTimeLimit:00:00:30
appcmd.exe set apppool "Contoso" /processModel.startupTimeLimit:00:00:30
Anda juga dapat menggunakan sintaks berikut:
appcmd.exe set config -section:system.applicationHost/applicationPools /[name='Contoso'].processModel.shutdownTimeLimit:"00:00:30" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /[name='Contoso'].processModel.startupTimeLimit:"00:00:30" /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 applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
ConfigurationElement addElement = FindElement(applicationPoolsCollection, "add", "name", @"Contoso");
if (addElement == null) throw new InvalidOperationException("Element not found!");
ConfigurationElement processModelElement = addElement.GetChildElement("processModel");
processModelElement["shutdownTimeLimit"] = TimeSpan.Parse("00:00:30");
processModelElement["startupTimeLimit"] = TimeSpan.Parse("00:00:30");
serverManager.CommitChanges();
}
}
private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
{
foreach (ConfigurationElement element in collection)
{
if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
{
bool matches = true;
for (int i = 0; i < keyValues.Length; i += 2)
{
object o = element.GetAttributeValue(keyValues[i]);
string value = null;
if (o != null)
{
value = o.ToString();
}
if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
{
matches = false;
break;
}
}
if (matches)
{
return element;
}
}
}
return null;
}
}
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 applicationPoolsSection As ConfigurationSection = config.GetSection("system.applicationHost/applicationPools")
Dim applicationPoolsCollection As ConfigurationElementCollection = applicationPoolsSection.GetCollection
Dim addElement As ConfigurationElement = FindElement(applicationPoolsCollection, "add", "name", "Contoso")
If (addElement Is Nothing) Then
Throw New InvalidOperationException("Element not found!")
End If
Dim processModelElement As ConfigurationElement = addElement.GetChildElement("processModel")
processModelElement("shutdownTimeLimit") = TimeSpan.Parse("00:00:30")
processModelElement("startupTimeLimit") = TimeSpan.Parse("00:00:30")
serverManager.CommitChanges()
End Sub
Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
For Each element As ConfigurationElement In collection
If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
Dim matches As Boolean = True
Dim i As Integer
For i = 0 To keyValues.Length - 1 Step 2
Dim o As Object = element.GetAttributeValue(keyValues(i))
Dim value As String = Nothing
If (Not (o) Is Nothing) Then
value = o.ToString
End If
If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
matches = False
Exit For
End If
Next
If matches Then
Return element
End If
End If
Next
Return Nothing
End Function
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST");
var applicationPoolsCollection = applicationPoolsSection.Collection;
var addElementPos = FindElement(applicationPoolsCollection, "add", ["name", "Contoso"]);
if (addElementPos == -1) throw "Element not found!";
var addElement = applicationPoolsCollection.Item(addElementPos);
var processModelElement = addElement.ChildElements.Item("processModel");
processModelElement.Properties.Item("shutdownTimeLimit").Value = "00:00:30";
processModelElement.Properties.Item("startupTimeLimit").Value = "00:00:30";
adminManager.CommitChanges();
function FindElement(collection, elementTagName, valuesToMatch) {
for (var i = 0; i < collection.Count; i++) {
var element = collection.Item(i);
if (element.Name == elementTagName) {
var matches = true;
for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
var property = element.GetPropertyByName(valuesToMatch[iVal]);
var value = property.Value;
if (value != null) {
value = value.toString();
}
if (value != valuesToMatch[iVal + 1]) {
matches = false;
break;
}
}
if (matches) {
return i;
}
}
}
return -1;
}
Vbscript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST")
Set applicationPoolsCollection = applicationPoolsSection.Collection
addElementPos = FindElement(applicationPoolsCollection, "add", Array("name", "Contoso"))
If siteElementPos = -1 Then
WScript.Echo "Element not found!"
WScript.Quit
End If
Set addElement = applicationPoolsCollection.Item(addElementPos)
Set processModelElement = addElement.ChildElements.Item("processModel")
processModelElement.Properties.Item("shutdownTimeLimit").Value = "00:00:30"
processModelElement.Properties.Item("startupTimeLimit").Value = "00:00:30"
adminManager.CommitChanges()
Function FindElement(collection, elementTagName, valuesToMatch)
For i = 0 To CInt(collection.Count) - 1
Set element = collection.Item(i)
If element.Name = elementTagName Then
matches = True
For iVal = 0 To UBound(valuesToMatch) Step 2
Set property = element.GetPropertyByName(valuesToMatch(iVal))
value = property.Value
If Not IsNull(value) Then
value = CStr(value)
End If
If Not value = CStr(valuesToMatch(iVal + 1)) Then
matches = False
Exit For
End If
Next
If matches Then
Exit For
End If
End If
Next
If matches Then
FindElement = i
Else
FindElement = -1
End If
End Function
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk