จะประเมินจำนวนการเชื่อมต่อผู้ใช้ (เซสชัน) ปัจจุบันไปยังไซต์ IIS บนเว็บเซิร์ฟเวอร์ที่ทำงานบน Windows Server ได้อย่างไร ข้อมูลดังกล่าวจะช่วยในการกำหนดและคาดการณ์โหลดบนเซิร์ฟเวอร์ เลือกเวลาที่ดีที่สุดสำหรับการบำรุงรักษาและอัปเดตของเว็บไซต์ คาดการณ์การโหลดของเซิร์ฟเวอร์ IIS เมื่อจำนวนผู้ใช้เพิ่มขึ้น
วิธีที่ง่ายที่สุดในการกำหนดจำนวนเซสชันผู้ใช้ที่ใช้งานอยู่บนเว็บไซต์ IIS คือการใช้ตัวนับประสิทธิภาพใน Windows การตรวจสอบประสิทธิภาพ .
เปิดคอนโซล Performance Monitor โดยเรียกใช้ perfmon คำสั่งและไปที่ส่วนการตรวจสอบประสิทธิภาพ (เครื่องมือการตรวจสอบ —> การตรวจสอบประสิทธิภาพ )
จากนั้น คุณต้องเพิ่มตัวนับที่จำเป็นลงในหน้าต่างมอนิเตอร์ (โดยค่าเริ่มต้น ตัวนับการใช้งาน CPU ทั้งหมดจะแสดงขึ้น แต่คุณสามารถลบออกได้) หากต้องการเพิ่มตัวนับใหม่ ให้คลิกปุ่มสีเขียวบนแถบเครื่องมือ (ดูได้จากภาพหน้าจอ) หรือกด Ctrl+N บนแป้นพิมพ์
ในรายการเคาน์เตอร์ที่ให้บริการ ค้นหาและขยาย บริการเว็บ กลุ่ม. ในหมวดนี้ เราสนใจสามเคาน์เตอร์:
- ผู้ใช้ที่ไม่ระบุชื่อปัจจุบัน – จำนวนผู้ใช้ IIS นิรนาม
- ผู้ใช้ที่ไม่ระบุตัวตนในปัจจุบัน – จำนวนผู้ใช้ IIS ที่ได้รับอนุญาต
- การเชื่อมต่อปัจจุบัน – จำนวนการเชื่อมต่อที่ใช้งานทั้งหมดบนเซิร์ฟเวอร์ IIS
เลือกตัวนับที่ต้องการและใน อินสแตนซ์ของวัตถุที่เลือก เลือกเว็บไซต์ IIS อย่างน้อยหนึ่งเว็บไซต์ที่คุณต้องการแสดงข้อมูลการเชื่อมต่อ ข้อมูลเกี่ยวกับผู้ใช้ของเว็บไซต์ทั้งหมดบนเซิร์ฟเวอร์ถูกเก็บไว้ใน _Total ตัวอย่าง. ตอนนี้คุณเพียงแค่คลิก เพิ่ม >> ปุ่มเพื่อย้ายตัวนับไปยังรายการตัวนับที่จะเพิ่มในบานหน้าต่างด้านขวา
เพิ่มตัวนับที่จำเป็นทั้งหมดในลักษณะเดียวกันแล้วคลิกตกลง
ขณะนี้ ข้อมูลเกี่ยวกับจำนวนเซสชันผู้ใช้ในคอนโซล Performance Manager กำลังแสดงแบบเรียลไทม์ (โดยดีฟอลต์ ค่าตัวนับจะแสดงเป็นกราฟเชิงเส้น) หากคุณเลือกตัวนับใดๆ ในบานหน้าต่างด้านล่าง คุณสามารถดูค่าสุดท้าย ค่าเฉลี่ย ต่ำสุด หรือสูงสุดในช่วงเวลาที่กำหนดได้
คุณสามารถเพิ่มตัวนับประสิทธิภาพที่กำหนดเองลงในคอนโซลนี้และบันทึกไว้ในมุมมองที่แยกต่างหาก ซึ่งสามารถใช้ในภายหลังเพื่อเข้าถึงข้อมูลการโหลดเว็บเซิร์ฟเวอร์ได้อย่างรวดเร็ว
คุณสามารถเข้าถึงตัวนับประสิทธิภาพ IIS จาก PowerShell เมื่อต้องการทำเช่นนี้ คุณสามารถใช้ Get-Counter cmdlet รายการตัวนับประสิทธิภาพ Web Service ที่มีอยู่ทั้งหมดสามารถแสดงได้ดังนี้:
(Get-Counter -ListSet 'Web Service').counter
ในการรับข้อมูลเกี่ยวกับจำนวนการเชื่อมต่อที่ใช้งานอยู่ในปัจจุบันบนเซิร์ฟเวอร์ IIS (ตัวนับ \Web Service(*)\Current Connections) ให้ใช้คำสั่งนี้:
Get-Counter -Counter “\Web Service(*)\Current Connections”
ดังที่คุณเห็น คำสั่งนี้ส่งคืนทั้งจำนวนการเชื่อมต่อทั้งหมดไปยังเซิร์ฟเวอร์ IIS และสถิติสำหรับแต่ละไซต์
เคล็ดลับ- ค่าของตัวนับหลายตัวสามารถแสดงได้หากคุณระบุให้คั่นด้วยเครื่องหมายจุลภาค
- ด้วย –ต่อเนื่อง ตัวเลือก ข้อมูลเกี่ยวกับค่าของตัวนับจะแสดงอย่างต่อเนื่องในคอนโซลจนกว่าคุณจะหยุดมันโดยใช้ CTRL+C
คุณสามารถรับจำนวนเซสชันที่ใช้งานอยู่สำหรับไซต์ IIS เฉพาะได้ ตัวอย่างเช่น หากต้องการรับจำนวนการเชื่อมต่อปัจจุบันบนไซต์ชื่อ Site1 ให้เรียกใช้คำสั่งต่อไปนี้:
Get-Counter "web service(Site1)\current connections" -ComputerName web-srv01
คุณสามารถระบุชื่อของเซิร์ฟเวอร์ที่จะตรวจสอบค่าตัวนับได้ เมื่อคุณกำลังตรวจสอบจำนวนการเชื่อมต่อบนไซต์ภายในเครื่อง ไม่อนุญาตให้ระบุ localhost:
เพื่อไม่ให้ระบุชื่อเซิร์ฟเวอร์ในแต่ละครั้ง คุณสามารถใช้ตัวแปรสภาพแวดล้อม COMPUTERNAME:
Get-Counter "web service(Site1)\current connections" -ComputerName $env:COMPUTERNAME
ในการรับค่าตัวเลขของตัวนับ "การเชื่อมต่อปัจจุบัน" ของเว็บเซิร์ฟเวอร์ IIS ทั้งหมด (ผู้ใช้ทั้งหมดบน IIS) คุณสามารถใช้คำสั่งนี้:
((Get-Counter -Counter 'web service(_total)\current connections' -computer $env:COMPUTERNAME) | Select-Object -Expand countersamples).Cookedvalue
ลองใช้สคริปต์ง่ายๆ เพื่อสร้างเซสชันเพิ่มเติมหลายๆ ครั้งกับไซต์ของเราและตรวจสอบค่าตัวนับ คุณสามารถเพิ่มจำนวนการเชื่อมต่อกับเว็บไซต์ IIS โดยใช้ Invoke-WebRequest cmdlet หรือเปิดหลายหน้าต่างในเบราว์เซอร์:
$counter = 20
for($i=1;$i -le $counter;$i++){
$SiteAdress = "https://localhost:9666/"
Start-Process $SiteAdress
}
ตรวจสอบค่าของตัวนับการเชื่อมต่อปัจจุบันและให้แน่ใจว่าเพิ่มขึ้น
หากไซต์ IIS หลายแห่งทำงานบนเซิร์ฟเวอร์ และคุณจำเป็นต้องได้รับจำนวนการเชื่อมต่อไปยังแต่ละไซต์ในรูปแบบของตาราง คุณสามารถใช้สคริปต์นี้ (หากต้องการรับข้อมูลจาก IIS ไปยัง PowerShell คุณต้องโหลดโมดูล WebAdministration ):
import-module webadministration
function get-CurrentConnection($Site) {
Get-Counter "web service($Site)\current connections,web service($Site)\ Bytes Received/sec,web service($Site)\Bytes Sent/sec" -ComputerName $env:COMPUTERNAME
}
$IISsites = dir IIS:\Sites | Select Name
$CurrentConnection = @()
foreach ($site in $IISsites)
{
Write-Host $site
$ConnCount = New-Object psobject | get-CurrentConnection -Site $site.name
$CurrentConnection += $ConnCount
}
$CurrentConnection|out-gridview
คุณยังสามารถแสดงค่าตัวเลขของตัวนับการเชื่อมต่อสำหรับไซต์ทั้งหมดได้ (ค่าแรกคือจำนวนการเชื่อมต่อทั้งหมดไปยัง IIS):
Get-wmiObject -class Win32_PerfRawData_W3SVC_WebService | select-object -expand currentconnections
คุณสามารถแสดงข้อมูลเกี่ยวกับจำนวนข้อมูลที่ได้รับ/ส่งข้อมูลสำหรับแต่ละไซต์หรือเว็บเซิร์ฟเวอร์ทั้งหมดโดยใช้ Web service(sitename)\Bytes Received/sec
และ Web service(sitename)\Bytes Sent/sec
เคาน์เตอร์
ดังนั้นเราจึงดูวิธีรับข้อมูลเกี่ยวกับโหลดบนไซต์ที่ทำงานบนเว็บเซิร์ฟเวอร์ IIS