سؤال

أنا أقوم باختبار الضغط على تطبيق ويب .NET.لقد فعلت هذا لسببين:أردت أن أرى كيف كان الأداء في ظل ظروف العالم الحقيقي وأيضًا للتأكد من أننا لم نفوت أي مشاكل أثناء الاختبار.كان لدينا 30 مستخدمًا متزامنًا في التطبيق يستخدمونه كما يفعلون أثناء سير عملهم العادي.كان لدى معظم المستخدمين نوافذ متعددة للتطبيق مفتوحة.

  • 10 مستخدمين:ليس سيئًا
  • 20 مستخدمًا:تباطؤ
  • 30 مستخدمًا:بطيء جدًا جدًا ولكن لا يوجد مهلة

تم تحميله على خادم الإنتاج.إنه خادم افتراضي مزود بمعالج Xeon بسرعة 2.66 جيجا هرتز وذاكرة وصول عشوائي (RAM) سعة 2 جيجابايت.نحن نستخدم Win2K3 SP2.لقد قمنا بتحميل .NET 1.1 و2.0 ونستخدم SQLExpress SP1.

لقد قمنا بإعادة فحص الفهارس في جميع الجداول بعد الكلمة وكانت جميعها كما ينبغي.

كيف يمكننا تحسين أداء تطبيقنا؟

هل كانت مفيدة؟

المحلول

هذا مجرد شيء فكرت فيه، ولكن تحقق لمعرفة مقدار الذاكرة التي يستخدمها SQL Server عندما يكون لديك أكثر من 20 مستخدمًا - أحد قيود إصدار Express هو أنه تقتصر على 1 غيغابايت من ذاكرة الوصول العشوائي.لذلك قد يكون الأمر مجرد مسألة عدم توفر ذاكرة كافية للخادم بسبب قيود Express.

نصائح أخرى

  1. ربما تواجه مشكلات في التزامن، اعتمادًا على كيفية تشغيل التطبيق الخاص بك.حاول إجراء قراءاتك باستخدام الكلمة الأساسية "nolock".

  2. حاول إضافة أسماء مستعارة للجدول لأعمدتك (وتجنب استخدام SELECT *)، فهذا يساعد MSSQL، لأنه لا يتعين عليه "تخمين" الجدول الذي تأتي منه الأعمدة.

  3. إذا لم تكن كذلك، فانتقل إلى SPROCs، فهذا يسمح لـ MSSQL بفهرسة بياناتك بشكل أفضل لمجموعة النتائج العادية لاستعلام معين.

  4. حاول اتباع خطة تنفيذ SPROCS الخاصة بك للتأكد من أنها تستخدم الفهارس التي تعتقد أنها تستخدمها.

  5. قم بإجراء تتبع لقاعدة البيانات الخاصة بك لترى كيف تبدو الطلبات الواردة.قد تلاحظ تشغيل SPROC معينًا مرارًا وتكرارًا:بشكل عام علامة جيدة لتخزين الاستجابات مؤقتًا على العميل إن أمكن.(قوائم البحث، الخ.)

تحديث:يبدو أن SQL Server Express ليس هو المشكلة لأنهم كانوا يستخدمون نفس المنتج في الإصدار السابق من التطبيق.أعتقد أن خطوتك التالية هي تحديد الاختناقات.إذا كنت متأكدًا من وجوده في طبقة قاعدة البيانات، فإنني أوصي بتتبع ملف التعريف وتقليل وقت تنفيذ الاستعلامات الأكثر تكلفة.

هذا رابط آخر أستخدمه لجمع الإحصائيات من طرق عرض الإدارة الديناميكية لـ SQL Server (DMVs) ووظائف الإدارة الديناميكية (DMFs) ذات الصلة.لست متأكدًا مما إذا كان بإمكاننا استخدامه في إصدار Express.كشف البيانات المخفية لتحسين أداء التطبيق.


هل تستخدم SQL Server Express لتطبيق ويب؟بقدر ما أعرف، لديها بعض القيود لنشر الإنتاج.

SQL خادم اكسبرس مجاني ويمكن إعادة توزيعه بواسطة بائعي البرامج المستقلين (يخضع للاتفاقية). SQL Server Express هو مثالية للتعلم وبناء تطبيقات سطح المكتب والخادم الصغير.يعد هذا الإصدار هو الخيار الأفضل لبائعي البرامج المستقلين والمطورين غير المحترفين والهواة الذين يقومون ببناء تطبيقات العميل.إذا كنت بحاجة إلى المزيد من ميزات قاعدة البيانات المتقدمة، فيمكن ترقية SQL Server Express بسلاسة إلى إصدارات أكثر تطوراً من SQL Server.

أود التحقق من أداء القرص على الخادم الظاهري.إذا كانت هذه إحدى المشكلات، فإنني أوصي بوضع قاعدة البيانات في عمود دوران منفصل.

تحديث:انتقل إلى فصل المغزل أو ترقية إصدار SQL Server كما يقترح Gulzar على نحو مناسب.

تأكد من إغلاق الاتصالات بعد استرداد البيانات.

قم بتشغيل SQL Profiler لرؤية الاستعلامات المرسلة إلى قاعدة البيانات.ابحث عن الاستعلامات التي:

  • إرجاع الكثير من البيانات
  • بنيت بشكل سيء
  • يتم إعدامهم مرات عديدة
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top