مراقبة الأداء هي عملية مستمرة لجمع وتحليل مقاييس أداء التطبيق لتحديد التباطؤ وتسرب الذاكرة والاستخدام غير الأمثل للموارد. وفقًا لـ Android Performance Guide, 2025، تتيح المراقبة اكتشاف انحرافات المقاييس في مرحلة مبكرة ومنع تدهور تجربة المستخدم قبل بدء الشكاوى الجماعية.
أهم النقاط
مراقبة الأداء هي ممارسة قياس سلوك التطبيق من خلال جمع مقاييس وقت التشغيل واستخدام الذاكرة ومعدل الإطارات واستهلاك الطاقة. على عكس الإبلاغ عن الأعطال الذي يلتقط فقط حالات الفشل الحرجة، تتعقب مراقبة الأداء التدهور التدريجي: التطبيق يعمل ولكنه أبطأ مما ينبغي.
وفقًا لـ Google (2024)، يغلق 53% من المستخدمين التطبيق إذا استغرق تحميله أكثر من 3 ثوانٍ. كل ثانية إضافية من التأخير تقلل التحويل بنسبة 20% في المتوسط عبر الفئات. هذا يجعل مراقبة الأداء ليست مجرد ممارسة تقنية بل ضرورة تجارية للمنتجات المحمولة.
تغطي مراقبة الأداء الحديثة أربعة مستويات: جانب العميل (iOS، Android)، الشبكة (طلبات API، WebSocket)، خدمات الخلفية والبنية التحتية. في تطوير التطبيقات المحمولة، ينصب التركيز على مقاييس جانب العميل، حيث أن معظم مشكلات الأداء تنشأ على جهاز المستخدم.
للحصول على مراقبة كاملة، يجب تتبع خمس مجموعات من المقاييس، كل منها مسؤولة عن جانب مختلف من تجربة المستخدم. FPS (إطار في الثانية) يظهر سلاسة الرسوم المتحركة والتمرير — القيم الأقل من 30 إطارًا في الثانية تُعتبر تباطؤًأ.
وقت بدء التشغيل البارد — من لحظة النقر على الأيقونة حتى اكتمال واجهة المستخدم. وقت بدء التشغيل الساخن — العودة من الخلفية. وقت الاستجابة لإجراء المستخدم (النقر للاستجابة). وقت بدء التشغيل لنظام Android يُقاس عبر ActivityManager، ولنظام iOS — عبر dyld ووقت premain. وفقًا لـ Firebase Performance، متوسط وقت بدء التشغيل البارد لأفضل 100 تطبيق هو 1.8 ثانية.
يجب ألا يتجاوز استهلاك RAM 80% من السعة المتاحة على الجهاز، وإلا سيبدأ النظام في تفريغ التطبيق من الخلفية. يتم تتبع بصمة الذاكرة عبر Xcode Instruments (iOS) وAndroid Profiler. يتم اكتشاف تسرب الذاكرة من خلال زيادة الاستهلاك أثناء العمليات المتكررة — على سبيل المثال، التنقل بين الشاشات.
وقت تنفيذ طلب HTTP، حجم الاستجابة، معدل المهلات والأخطاء. زمن وصول الشبكة مهم بشكل خاص للتطبيقات المحمولة التي تعمل في ظروف اتصال غير مستقرة (3G، مترو، مصعد، تجوال). يوصى بتتبع وقت الاستجابة p95 — فهو يظهر تجربة المستخدمين الأكثر «ثقلًا» في أسوأ ظروف الشبكة.
| المقياس | طبيعي | حرج |
|---|---|---|
| بدء التشغيل البارد | حتى 2 ث | أكثر من 4 ث |
| FPS | 55–60 | أقل من 30 |
| استجابة API | حتى 500 مللي | أكثر من 2 ث |
| استخدام الذاكرة | حتى 200 ميجابايت | أكثر من 400 ميجابايت |
| معدل ANR | أقل من 0.1% | أكثر من 0.5% |
Real User Monitoring (RUM) يجمع البيانات من أجهزة المستخدمين الحقيقية في بيئة الإنتاج. تُظهر هذه الطريقة فترات التأخير الفعلية التي يعاني منها المستخدمون مع مراعاة أجهزتهم وإصدارات OS والشبكة والموقع الجغرافي. يوفر RUM الصورة الأكثر دقة للأداء ولكنه يعتمد على المستخدمين الذين شملتهم العينة.
Synthetic Monitoring، من ناحية أخرى، ينفذ سيناريوهات محددة مسبقًا على أجهزة اختبار في ظروف خاضعة للرقابة. يسمح باكتشاف التدهور قبل وصوله إلى المستخدمين وإعادة إنتاج المشكلات في بيئة متسقة. يوفر Firebase Test Lab وBrowserStack اختبارات تركيبية على أجهزة حقيقية دون تنفيذ يدوي.
الاستراتيجية المثلى هي مزيج من كلا النهجين: الاختبارات التركيبية تلتقط التدهور في مرحلة CI، بينما يوفر RUM الصورة الحقيقية في الإنتاج. وفقًا لـ Datadog (2024)، تكتشف الفرق التي تستخدم كلا الطريقتين 35% أكثر من مشكلات الأداء قبل أن تتحول إلى حوادث.
Firebase Performance Monitoring هي أداة مجانية من Google لجمع مقاييس الأداء على iOS وAndroid. يقيس تلقائيًا وقت بدء تشغيل التطبيق وطلبات HTTP وعرض الشاشات دون كتابة تعليمات برمجية. للإعداد، ما عليك سوى إضافة SDK إلى مشروعك وتفعيل وحدة Performance في وحدة تحكم Firebase.
بعد دمج SDK، يقوم Firebase Performance تلقائيًا بإنشاء trace لكل طلب HTTP عبر URLSession (iOS) أو OkHttp (Android). يتم قياس عرض الشاشة لـ UIViewController وActivity، مع تسجيل الوقت من onCreate/viewDidLoad حتى اكتمال العرض الأول. يتم تجميع جميع المقاييس في وحدة تحكم Firebase، مقسمة حسب إصدار التطبيق والجهاز والدولة.
import com.google.firebase.perf.FirebasePerformance
import com.google.firebase.perf.metrics.Trace
class PaymentService {
private val firebasePerf = FirebasePerformance.getInstance()
fun processPayment(amount: Double) {
val trace = firebasePerf.newTrace("payment-flow")
trace.start()
trace.putAttribute("amount", amount.toString())
// تنفيذ الدفع
trace.stop()
}
}
ينشئ الكود trace مخصصًا لسيناريو الدفع مع سمة المبلغ. باستخدام هذا التتبع في وحدة تحكم Firebase، يمكنك رؤية متوسط وقت تنفيذ الدفع و p95، مجمعة حسب إصدار التطبيق والجهاز.
يعترض Firebase تلقائيًا طلبات الشبكة ويسجل URL ورمز الاستجابة وحجم البيانات ووقت التنفيذ. بالنسبة لـ OkHttp على Android، تعمل الأدوات التلقائية دون تكوين إضافي. يتم عرض طلبات الشبكة في وحدة التحكم مجمعة حسب نقطة النهاية، مما يسمح بتحديد تباطؤ API معين بسرعة.
تغطي المقاييس القياسية الأداء العام، ولكن لتشخيص عمليات الأعمال يلزم تتبع سيناريوهات محددة. تتيح التتبعات المخصصة قياس وقت تنفيذ المصادقة وتحميل خلاصة الأخبار ومعالجة الصور أو مزامنة البيانات.
يجب أن يكون لكل تتبع مخصص اسم ذو معنى بتنسيق «سيناريو-إجراء» ويحتوي على سمات للتصفية. على سبيل المثال، تتبع «image-upload» مع سمات «file_size» و«compression_quality» سيساعد في تحديد اعتماد وقت التحميل على حجم الصورة. يُوصى بعدم إنشاء أكثر من 20 تتبعًا مخصصًا لكل شاشة — فالأدوات المفرطة تخلق ضوضاء وتعقد التحليل.
import FirebasePerformance
func trackImageUpload(data: Data) {
let trace = Performance.startTrace(name: "image-upload")
trace?.setValue(data.count, forAttribute: "file_size")
trace?.setValue("high", forAttribute: "compression")
// تحميل الصورة
trace?.stop()
}
مثال Swift ينشئ تتبعًا لتحميل الصورة مع سمات حجم الملف ومستوى الضغط. في وحدة تحكم Firebase، تصبح هذه السمات حقولًا لتجميع وتصفية المقاييس.
جمع المقاييس دون نظام تنبيه غير مفيد. التنبيهات يجب أن تخطر الفريق عند تجاوز المقاييس للحدود المقبولة، مع تقسيم العتبات إلى ثلاثة مستويات: تحذيري، حرج، وتعطل. يحدد كل مستوى قناة الإشعار: التحذيري — إلى قناة Slack للفريق، الحرج — إلى PagerDuty للمهندس المناوب، التعطل — إشعار جماعي لجميع أصحاب المصلحة.
لمقاييس التطبيقات المحمولة، يوصى باستخدام عتبات ديناميكية قائمة على النسب المئوية: وقت بدء التشغيل البارد p95 يتجاوز 4 ثوانٍ — تنبيه حرج. العتبات الثابتة (مثل CPU > 90%) تعمل بشكل أسوأ لأنها لا تأخذ في الاعتبار التقلبات الطبيعية في الحمل حسب الوقت من اليوم ويوم الأسبوع. Firebase Performance يدعم إعداد التنبيهات عبر Firebase Console مع إرسال إشعارات إلى Slack وPagerDuty والبريد الإلكتروني، مع خيارات التصعيد في حالة عدم التأكيد.
وفقًا لاستطلاع إدارة الحوادث (2024)، الفرق التي تضبط التنبيهات بناءً على النسب المئوية بدلاً من المتوسطات تفوّت 45% أقل من الحوادث. المتوسط يخفف القيم المتطرفة — p95 يضمن إظهار أسوأ سيناريو للمستخدمين، بغض النظر عن الوقت من اليوم والتقلبات الموسمية في الحمل.
الأسئلة الشائعة
الأدوات الرئيسية: Firebase Performance Monitoring (مجاني، وظائف أساسية)، Dynatrace (RUM للمؤسسات)، New Relic Mobile، Datadog RUM وInstabug (متخصص في التطبيقات المحمولة). يعتمد الاختيار على الميزانية وعمق التحليل المطلوب.
يجب جمع المقاييس وعرضها على لوحة المعلومات في الوقت الفعلي بتأخير لا يزيد عن 5 دقائق. يُوصى بتحليل الاتجاهات مرة واحدة في الأسبوع. التنبيهات التلقائية يجب أن تعمل عند تجاوز العتبات دون تدخل بشري — هذه هي الطريقة الوحيدة للاستجابة للمشكلات قبل أن يلاحظها المستخدمون.
الحد الأدنى: وقت بدء التشغيل البارد، FPS، معدل ANR (Android) أو إنهاءات المراقب (iOS)، معدل خطأ HTTP واستخدام الذاكرة. هذا يكفي لاكتشاف 80% من مشكلات الأداء في مشروع محمول نموذجي. مع نمو التطبيق، تضاف مقاييس للشاشات المحددة وسيناريوهات الأعمال لتشخيص أكثر دقة.
نعم، تضيف SDKs مراقبة الأداء 1–3 ميجابايت إلى حجم التطبيق حسب الأداة. يضيف Firebase Performance Monitoring حوالي 1.2 ميجابايت. يوصى بتضمين SDK فقط في إصدارات الاختبار والإنتاج، مع استبعاده من إصدارات التصحيح.
إذا كان وقت انتظار استجابة API مرتفعًا ولكن مقاييس الخادم طبيعية — المشكلة في جانب العميل (شبكة الجهاز، DNS، مصافحة TLS). إذا أظهر الخادم حملاً عاليًا أو استعلامات قاعدة بيانات بطيئة — المشكلة في الخادم الخلفي. التتبع الموزع يعطي إجابة قاطعة من خلال ربط طلب العميل بمعالجة الخادم.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا