الإجابة المختصرة: عندما تكون كل شاشات أودو (اودو) بطيئة، يكون السبب في الغالب هو الاستضافة: عدد قليل من الـ Workers، أو ذاكرة غير كافية، أو أقراص بطيئة، أو قاعدة بيانات غير مضبوطة. أما عندما تكون شاشة واحدة أو تقرير واحد فقط بطيئًا، فالسبب في الغالب هو البيانات أو الكود الخاص بتلك الشاشة. والتمييز بين الحالتين هو الخطوة الأولى والأكثر فائدة.
السؤال الأول: هل كل شيء بطيء أم شيء واحد؟
افتح بضع شاشات عادية مثل قائمة العملاء وأمر بيع وقائمة الإعدادات. فإذا كانت كلها بطيئة فانظر إلى الخادم. وإذا كانت سريعة وكان تقرير أو قائمة أو إجراء معين فقط بطيئًا، فانظر إلى تلك الميزة وحجم بياناتها وأي وحدة مخصصة تعدّل عليها.
لاحظ أيضًا متى يحدث البطء. فالبطء الذي يظهر خلال ساعات العمل فقط يشير إلى خادم تنفد قدرته تحت الضغط، والبطء في الوقت نفسه كل يوم يشير غالبًا إلى إجراء مجدول ثقيل.
أسباب تتعلق بالاستضافة
عدد قليل من الـ Workers
يعالج كل Worker طلبًا واحدًا في كل مرة، وعندما تنشغل جميعها تنتظر الطلبات الجديدة. فيرى المستخدمون شاشات تتوقف بضع ثوانٍ ثم تُحمَّل، خاصة في أوقات الذروة. وكقاعدة عامة، خطّط لـ Worker واحد لكل نحو 25 مستخدمًا نشطًا، وأكثر من ذلك إذا كانت لديك نقاط بيع أو موقع إلكتروني.
ذاكرة غير كافية
عندما تنفد الذاكرة يبدأ الخادم في استخدام ذاكرة التبديل على القرص، وهي أبطأ من الذاكرة الفعلية بمرات عديدة، أو يعيد أودو تشغيل الـ Workers التي تتجاوز حد الذاكرة المسموح. وتظهر النتيجة في الحالتين في صورة بطء مفاجئ وتقارير تفشل.
أقراص بطيئة
يعتمد أودو على PostgreSQL، ويعتمد PostgreSQL على القرص. وقاعدة البيانات المحفوظة على تخزين بطيء أو مشترك تجعل كل بحث وكل تقرير أبطأ. وتخزين NVMe يُحدث فرقًا واضحًا.
قاعدة بيانات غير مضبوطة
يأتي PostgreSQL بإعدادات افتراضية متحفظة. ودون ضبط إعدادات الذاكرة والاتصالات بما يناسب الخادم، لن يستفيد من الموارد التي تدفع مقابلها.
إعدادات خادم الويب الناقصة
يجب أن يعمل أودو خلف خادم ويب مثل Nginx يضغط الاستجابات ويقدّم الملفات الثابتة بكفاءة. كما تحتاج الميزات الفورية إلى مسار خاص بها في الإعدادات. وعندما تغيب هذه الإعدادات تُحمَّل الصفحات ببطء أكبر وتظهر أخطاء اتصال في بعض الميزات.
المسافة إلى الخادم
كل نقرة تنتقل إلى الخادم ثم تعود. والخادم الموجود في قارة أخرى يضيف تأخيرًا إلى كل إجراء، ويشعر به الكاشيرات وموظفو المستودعات أكثر من غيرهم. والاستضافة القريبة من مستخدميك تقلل هذا التأخير.
أسباب لا علاقة لها بالاستضافة
- الوحدات المخصصة ذات الكود غير الفعّال، مثل الحقول المحسوبة التي يُعاد حسابها في كل شاشة.
- حجم بيانات كبير جدًا في جدول واحد، مثل سنوات من السجلات أو الرسائل أو حركات المخزون التي لم تُؤرشف قط.
- الإجراءات المجدولة الثقيلة التي تعمل خلال ساعات الدوام.
- ملفات كبيرة محفوظة في المكان الخطأ، أو مخزن ملفات نما إلى حجم يفوق كثيرًا ما صُمم له الخادم.
الخادم الأسرع يخفي هذه المشكلات لفترة لكنه لا يحلها، إذ يجب إصلاحها في الكود أو في البيانات.
قائمة فحص سريعة
- تحقق مما إذا كانت كل الشاشات بطيئة أم بعضها فقط.
- راجع استهلاك المعالج والذاكرة وذاكرة التبديل (Swap) على الخادم خلال فترة البطء.
- راجع سجل أودو بحثًا عن إعادة تشغيل الـ Workers أو انتهاء مهلة الطلبات.
- قارن عدد الـ Workers بعدد المستخدمين النشطين.
- اجمع قائمة بالإجراءات المجدولة ومواعيد تشغيلها.
- اختبر الشاشة البطيئة على نسخة تجريبية بعد تعطيل الوحدات المخصصة.
الأسئلة الشائعة
هل يحل الانتقال إلى خادم أكبر مشكلة بطء أودو؟
فقط إذا كان السبب هو الخادم. أما إذا كان تقرير واحد بطيئًا بسبب وحدة مخصصة أو جدول ضخم، فسيجعله الخادم الأكبر أسرع قليلًا بتكلفة أعلى بكثير. شخّص المشكلة أولًا.
لماذا يكون أودو سريعًا في الصباح وبطيئًا عند الظهر؟
هذا النمط يعني في الغالب أن الخادم تنفد منه الـ Workers أو الذاكرة عندما يزيد عدد العاملين. وإضافة Workers أو ذاكرة تحل المشكلة عادة.
لماذا تكون نقاط البيع بطيئة بينما تعمل الإدارة بشكل طبيعي؟
نقاط البيع حساسة لزمن الاستجابة ولانشغال الـ Workers في أوقات الذروة. فالخادم البعيد عن المتجر، أو قلة الـ Workers في ساعات الازدحام، يؤثر على نقاط البيع أولًا.
مقالات ذات صلة
مواصفات سيرفر أودو حسب عدد المستخدمين