ما هي الاستراتيجيات التي استخدمتها لتحسين أداء تطبيقات الويب؟[مغلق]

StackOverflow https://stackoverflow.com/questions/22704

سؤال

  • هل لديك أي خبرة شخصية في التغلب على عقبات أداء تطبيقات الويب؟
  • هل هناك أي استراتيجيات موصى بها لتحسين أداء تطبيق الويب المبني على البيانات؟

يعمل فريق التطوير الخاص بي على تطبيق ويب (تقارير JSP وHTML وJavaScript) يستخدم قاعدة بيانات Oracle (PL/SQL).تتمثل الوظيفة الرئيسية التي يقدمها التطبيق في إعداد التقارير، حيث يمكن للمستخدم الحصول على ملفات PDF للتقارير على مستوى عالٍ والانتقال إلى مستويات أقل من التفاصيل الداعمة.

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

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

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

المحلول

على الرغم من أن إجابتي قد لا تحتوي على أي خطوات ملموسة للمساعدة، إلا أن هذا هو المكان الذي أبدأ فيه دائمًا.

أول شيء سأفعله هو محاولة التخلص من جميع افتراضاتك حول ماهية المشكلة واتخاذ خطوات لتثبيت المقاييس في كل مكان يمكنك القيام به.دع المقاييس ترشدك بدلاً من حدسك.لقد طاردت الكثير والكثير من الأرانب البيضاء بناءً على حدس... وقد خذلوني مرات أكثر مما كانوا على حق.

نصائح أخرى

هل راجعت ذلك؟

أفضل الممارسات لجعل صفحات الويب سريعة من فريق الأداء الاستثنائي لشركة Yahoo!

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

استخدم أيضًا الوظيفة الإضافية YSlow لـ Firebug.قد تتفاجأ عندما ترى المكان الذي يتم فيه استهلاك الوقت الفعلي.

هل فكرت في بناء بياناتك مسبقًا؟بمعنى آخر هل هناك مجموعات من البيانات يتم طلبها مرارًا وتكرارًا؟إذا كان الأمر كذلك فاجعلها جاهزة قبل أن يطلبها المستخدم.أنا لا أتحدث بالضبط عن التخزين المؤقت، ولكن أعتقد أن هذا جزء من المعادلة.

قد يكون من المفيد التراجع عن التعليمات البرمجية وفحص أنماط استخدام النظام.على سبيل المثال، إذا كنت تعرض على الأشخاص المخزون الشهري أو معلومات المبيعات، فهل ينظرون إليها فقط في نهاية الشهر؟إذا كان الأمر كذلك، فما عليك سوى إنشاء البيانات في اليوم الأخير وتخزينها.إذا نظروا إليها يوميًا، فربما يحاولون بناء نتائج الأيام السابقة وتخزين النتائج وتجنب الحساب.أعتقد في النهاية أنني أدفعك إلى البرمجة الديناميكية حل؛إذا كنت تعرف إجابة فلا تحلها مرة أخرى.

كما يقول Webjedi، المقاييس هي صديقك.

انظر أيضًا إلى مجموعتك واكتشف أين توجد فرص للتخزين المؤقت - ثم استخدمها بلا رحمة حيثما أمكن ذلك!

كما قلت في سؤال آخر:

استخدم ملف التعريف. نعم، إنها تكلف مالًا، وقد يكون استخدامها أحيانًا أمرًا محرجًا بعض الشيء، لكنها توفر لك قدرًا كبيرًا من الأدلة الحقيقية بدلاً من التخمين.

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

ليس كل المحللين يكلفون أموالاً (إضافية).بالنسبة لـ .Net، أستخدم بنجاح إصدارًا قديمًا من NProf (تم التخلي عنه حاليًا ولكنه لا يزال يعمل بالنسبة لي) لتوصيف تطبيقات ASP.Net الخاصة بي.بالنسبة لـ SQL Server، يعد منشئ ملفات تعريف الاستعلام جزءًا من الحزمة.يوجد أيضًا ملف تعريف CLF من MS ولكني لم أتمكن مطلقًا من تشغيله بنجاح.

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

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

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