
ويندوز سيرفر للمحترفين #14: ضبط الأداء، ثلاث خرافات والمحاكاة الافتراضية
Murtaja
🧭 قبل أن نبدأ
في الحلقة السابقة تعلمنا استكشاف الأعطال. اليوم نتعامل مع نوع خاص منها: البطء. هذه الحلقة عن الفصل الرابع عشر: ضبط الأداء، والكاتب يرى أن الأداء مهمة ذات وجهين: تحسين الخوادم المثقلة، واستغلال الخوادم غير المستغلة عبر المحاكاة الافتراضية. سنبدأ بتفكيك ثلاث خرافات، ثم نتعرف على الأدوات والعدادات، ثم Hyper-V.
🚀 الفصل الرابع عشر: ضبط الأداء (Performance Tuning)
🧨 ثلاث خرافات وثلاث حقائق
| الخرافة | الحقيقة |
|---|---|
| المعالج مرتفع؟ إذن تحتاج معالجًا أسرع | One system component is seldom the culprit |
| 80% من الأداء يحدده الكود | Better code is better, but better design is best |
| الخادم المُحسَّن كافٍ لأداء قاعدة البيانات | It still has to travel the network |
1️⃣ نادرًا ما يكون المذنب مكوّنًا واحدًا
"One system component is seldom the culprit." — "نادرًا ما يكون مكوّن واحد في النظام هو المذنب."
مثال الكاتب: معالج يعمل بمتوسط 82%. قد تضاعف سرعته فلا ينخفض الاستخدام إلا إلى 80%! والسبب أن عداد Pages/sec مرتفع، أي أن الذاكرة الفعلية غير كافية. مضاعفة الذاكرة وحدها قد تخفض استخدام المعالج بنسبة 20% إلى 40%. وإذا كان طابور القرص طويلًا أيضًا، فضع ملف الذاكرة الافتراضية على أقراص أسرع أو على RAID 0.
والدرس: راقب عدة عدادات، وحللها كوحدة متكاملة قبل أي قرار. ويلاحظ الكاتب بأسف أن Windows 2000 كان يبدأ أداة المراقبة بثلاثة عدادات افتراضية، بينما عادت Windows 7 و2008 R2 إلى عداد المعالج وحده، فلا تكتفِ به.
2️⃣ التصميم أهم من الكود
"Better code is better, but better design is best." — "الكود الأفضل جيد، لكن التصميم الأفضل هو الأهم."
يمكن أن يكون لديك أفضل كود في التاريخ، وتبقى قاعدة البيانات بطيئة بسبب سوء التصميم الفعلي والمنطقي. والتحسينات التصميمية تشمل: التحكم فيما يُثبَّت على الخادم، ووضع البيانات على مصفوفة Stripe Set، وإضافة ذاكرة لتقليل استخدام ملف الترحيل.
3️⃣ البيانات ما زالت تسافر عبر الشبكة
"Performance is both a measurable fact and a perceptive reality." — "الأداء حقيقة قابلة للقياس، وانطباع يشعر به المستخدم، في الوقت نفسه."
قد يكون الخادم ممتازًا في كل القياسات، ومع ذلك يشتكي المستخدمون أن "الخادم بطيء" لأن الشبكة مزدحمة. تأكد من كفاية سعة الشبكة قبل نشر حلول كثيفة نقل البيانات.
⌨️ أدوات موجه الأوامر
:: العمليات التي تستهلك 15,000 KB من الذاكرة أو أكثر
tasklist /fi "memusage ge 15000"
:: العمليات التي استهلكت أكثر من دقيقة من وقت المعالج
tasklist /fi "cputime ge 00:01:00"
:: ضبط خدمة لتبدأ تلقائيًا (المسافة بعد start= إلزامية)
sc config winrm start= auto
:: إنهاء عملية قسرًا (/f)، بالاسم أو برقم العملية (/pid)
taskkill /im notepad.exe /f
:: إعادة التشغيل بعد 90 ثانية مع إغلاق قسري للتطبيقات
shutdown /r /t 90 /f
shutdown /a :: إلغاء الإيقاف المجدول
:: ملخص النظام والعتاد والتحديثات المثبتة
systeminfo /fo list
:: تصدير قائمة كل العدادات، ثم قراءة عداد 10 مرات كل 5 ثوانٍ
typeperf -q > counters.txt
typeperf "\Memory\Available MBytes" -sc 10 -si 5
📝 ملاحظة على الكتاب: مثال الكتاب الأصلي هو
sc config winrm start= demand، ويقول النص إنه يضبط الخدمة على Automatic. والصحيح أنdemandتعني Manual، وأنautoهي التي تعني Automatic.
🔬 Resource Monitor
خمسة تبويبات:
- Overview: ملخص المعالج والقرص والشبكة والذاكرة.
- CPU: العمليات، والمقابض (Handles) وهي مؤشرات إلى كائنات النظام كالملفات ومفاتيح السجل، والوحدات (Modules) وهي ملفات مساعدة غالبًا بصيغة DLL.
- Memory: استهلاك كل عملية.
- Disk: نشاط القرص حسب العملية.
- Network: الحركة حسب العملية، واتصالات TCP، والمنافذ المستمعة (Listening Ports).
🔗 Analyze Wait Chain: من أكثر الميزات تجاهلًا. حين يظهر "Not Responding" على تطبيق، اضغط كليك يمين على عمليته واختر هذا الخيار، لتعرف هل التطبيق معلّق فعلًا، أم ينتظر عملية أخرى طويلة.
📈 Performance Monitor
هو في الحقيقة واجهة لعنصر ActiveX اسمه System Monitor. ومرّ اسمه بتحولات عبر الإصدارات: Performance Monitor في NT، ثم Performance، ثم Reliability and Performance Monitor، ثم Performance Monitor مرة أخرى في 2008 R2. ويعلّق الكاتب ساخرًا:
"Isn't life with software vendors wonderful?" — "أليست الحياة مع مصنّعي البرمجيات رائعة؟"
🎯 أهم العدادات وعتباتها التحذيرية
| العداد | متى يدق ناقوس الخطر؟ |
|---|---|
Processor\% Processor Time | أكثر من 75–85% |
Processor\% User Time | أكثر من 30–40%: تطبيق يستهلك المعالج بشكل مفرط |
Processor\% Interrupt Time | أكثر من 15%: قد يعني عطلًا في العتاد |
System\Processor Queue Length | أكثر من ضعف عدد المعالجات لفترة |
Memory\% Committed Bytes in Use | أكثر من 75–80%: نقص في الذاكرة |
Memory\Available MBytes | أقل من 5% من الذاكرة الفعلية |
Memory\Pages/sec | أكثر من 1000: قد يعني تسرّب ذاكرة (Memory Leak) |
Memory\Free System Page Table Entries | أقل من 5000: تسرّب ذاكرة محتمل |
LogicalDisk\% Free Space | أقل من 10–15% |
PhysicalDisk\Avg. Disk Queue Length | أكثر من ضعف عدد المحاور (Spindles) |
Network Interface\Bytes Total/sec | أكثر من 70% من سعة البطاقة: شبكة مشبعة |
Network Interface\Output Queue Length | أكثر من 2 |
صفحة الذاكرة حجمها 4 KB، والخطأ الصفحي الصلب (Hard Page Fault) يحدث حين لا تكون الصفحة في RAM فتُجلب من القرص. والبرمجيات الخبيثة ترفع غالبًا استهلاك المعالج والذاكرة.
📏 خط الأساس (Baseline)
خط الأساس مجموعة إحصاءات تُجمع والنظام يعمل بشكل مثالي، وله فائدتان:
- المقارنة لاحقًا: إذا كان متوسط المعالج 43% وصار 76% دون زيادة في المستخدمين، فابحث عن عملية مشبوهة (ربما أضافها مسؤول حسن النية دون أن يدرك أثرها).
- معرفة أوقات الهدوء: إذا كان المعالج 8% بين 11 مساءً و7 صباحًا، فهذا هو الوقت المناسب لجدولة النسخ الاحتياطي.
📍 نقاط المراقبة: أين تقيس؟
مثال SharePoint 2010، وله ثلاثة أنواع من الخوادم:
- Web Front End: يستقبل المستخدمين ويحيل طلباتهم.
- Application Server: "حصان العمل" الحقيقي، وعليه البحث والفهرسة.
- Database Server: عليه المحتوى. كل نقرة تقريبًا تقرأ من قاعدة البيانات (ويمكن رؤية ذلك بأداة SQL Server Profiler)، فإذا بطؤت بطؤ كل شيء.
القاعدة: راقب الخادم الذي يؤثر مباشرة في المشكلة. البحث بطيء؟ راقب خادم التطبيقات الذي يشغّل خدمة البحث. كل شيء بطيء؟ ابدأ بخادم قاعدة البيانات.
🗃️ مجموعات جمع البيانات (Data Collector Sets)
حلّت محل Performance Logs منذ Vista و2008. المجموعتان المدمجتان System Diagnostics وSystem Performance لا يمكن تعديلهما، لكن يمكنك إنشاء مجموعتك الخاصة:
Data Collector Sets > User Defined > New > "MyCustomDCS" > From template: System Performance
→ Performance Counter: احذف العدادات غير اللازمة، واضبط Log Format = Comma Separated (لتحليلها في Excel)
→ Stop Condition: Overall Duration = 60 دقيقة
→ Start
→ Reports > User Defined > MyCustomDCS
ساعة واحدة نقطة بداية جيدة تعطي عينة كافية من بيانات الأداء.
🧊 المحاكاة الافتراضية: الوجه الآخر للأداء
لماذا يأتي الحديث عن المحاكاة في فصل الأداء؟ لأن المشكلة أحيانًا عكسية: خادم رباعي النواة بذاكرة 16 GB قد لا يُستخدم منه إلا 15% إلى 20%. والمحاكاة الافتراضية تستثمر هذه الموارد الضائعة.
⚠️ لا تخلط بين المحاكاة الافتراضية، حيث تعمل عدة أنظمة في الوقت نفسه، والإقلاع المزدوج (Dual-boot) الذي يتطلب إعادة التشغيل للانتقال بين الأنظمة.
| قائمة على Hypervisor ("Bare Metal") | فوق نظام التشغيل (OS-Layered) |
|---|---|
| محرك المحاكاة يعمل مباشرة فوق العتاد | نظام، فوقه محرك محاكاة، فوقه الأجهزة الافتراضية |
| أداء أفضل بكثير | أداء أقل بسبب الطبقات الإضافية |
| Hyper-V، وVMware ESX | Virtual PC، وVirtual Server 2005، وVMware Workstation |
🪟 حلول مايكروسوفت
- Hyper-V: يدعم الشبكات والأقراص الافتراضية واللقطات والحالات المحفوظة. ومع SCVMM تحصل على إدارة مركزية وترحيل سريع وتوفير ذاتي للأجهزة. وأضاف Hyper-V R2 ميزة Live Migration لنقل أجهزة افتراضية وهي تعمل.
- Windows Virtual PC: لـ Windows 7، وأشهر استخداماته XP Mode لتشغيل التطبيقات القديمة.
- الأقدم: Virtual Server 2005 (سلف Hyper-V) وVirtual PC 2007.
- من غير مايكروسوفت: VMware وParallels وVirtualBox مفتوح المصدر.
🧩 مكوّنات الجهاز الافتراضي
- VHD: ملف يمثّل القرص، ثابت الحجم أو ديناميكي ينمو حتى حد أقصى.
- الذاكرة: تُحجز من الذاكرة الفعلية عند تشغيل الجهاز. ⚠️ تقليل استخدام ملف الترحيل داخل الأجهزة الافتراضية أهم منه في الأجهزة الفعلية، لأنه يُكتب على ملفات VHD ويضعف أداء القرص بشدة.
- الشبكات في Hyper-V:
- External: على الشبكة الحقيقية.
- Internal: بين الأجهزة الافتراضية والمضيف فقط.
- Private: بين الأجهزة الافتراضية فقط.
- Dedicated: بطاقة فعلية مخصصة لجهاز افتراضي واحد.
- الاسترداد: Snapshot صورة للحالة في لحظة معينة يمكن الرجوع إليها، وSaved State يشبه السبات (Hibernation) في الحاسوب المحمول.
🔄 الترحيل بين الفعلي والافتراضي
P2V (من فعلي إلى افتراضي):
- إزالة التعريفات الخاصة بالعتاد ومعرّفات الأمان الفريدة.
- تحويل القرص إلى VHD.
- تحميل الـ VHD كقرص لجهاز افتراضي جديد.
- الإقلاع وتحميل تعريفات Hyper-V.
أداة SCVMM تنفذ هذا تلقائيًا. والعكس V2P يتم بأدوات التصوير (WIM أو Ghost). أما MAP Toolkit المجانية فتجرد خوادمك وتقترح المرشحين للتحويل.
💎 اقتباسات هذا الجزء تستحق التوقف عندها
- "نادرًا ما يكون مكوّن واحد هو المذنب.": لا تشترِ معالجًا قبل أن تفحص الذاكرة.
- "التصميم الأفضل هو الأهم.": البنية الصحيحة تتفوق على الكود الذكي.
- "الأداء حقيقة وانطباع.": رضا المستخدم هو المقياس النهائي.
- "أليست الحياة مع مصنّعي البرمجيات رائعة؟": لا تتعلق بالأسماء، بل افهم الوظيفة.
🎯 خلاصة الجزء
افهم النظام كاملًا قبل أي تعديل. Resource Monitor للنظرة السريعة، وPerformance Monitor للمراقبة الممتدة والتقارير، وأدوات موجه الأوامر للتحليل السريع. وحين تكون الخوادم غير مستغلة، فالحل هو المحاكاة الافتراضية القائمة على Hypervisor.
في الحلقة الأخيرة من السلسلة نختم مع الفصل الخامس عشر: صيانة الخادم: العتاد والتحديثات وWSUS والنسخ الاحتياطي واستمرارية الأعمال. 🚀