ابدأ بتحديد مكان التأخير
عندما يستغرق فتح غرفة Matrix أو الانضمام إليها وقتًا طويلاً، حدد أولاً ما إذا كان التأخير يؤثر على خادم منزلي بعيد واحد، أو غرفة واحدة، أو على نسخة Synapse بأكملها. هذا التمييز مهم: فالاتحاد هو تبادل ثنائي الاتجاه بين الخوادم المنزلية، وقد يشمل الانضمام إلى غرفة عدة خوادم. قد يكون سبب بطء الانضمام هو عملية Synapse، أو الخادم البعيد، أو توجيه DNS أو TLS، أو قاعدة البيانات، أو حجم الغرفة وحالتها. لا يوجد خيار واحد لمعالجة تأخير الاتحاد يُصلح كل هذه المشاكل.
تم التحقق: يسجل Synapse معلومات إعادة محاولة الاتصال بالوجهة البعيدة، ويعرض مقاييس Prometheus، ويتضمن حدود معدل الانضمام إلى الغرف. يعتمد الأمر على الحالة: أي من هذه العوامل مسؤول عن بطء الانضمام الفردي؟ لا يمكن معرفة ذلك من العرض وحده: ما إذا كان الخادم الرئيسي الآخر أو شبكة وسيطة هي البطيئة. ابدأ بمستخدم واحد متأثر، وغرفة واحدة، والوقت التقريبي لمحاولة الانضمام البطيئة؛ قارن هذه التفاصيل مع غرفة تحكم تنضم بشكل طبيعي.
تحقق مما إذا كان الوصول إلى الاتحاد ممكناً
استخدم أداة اختبار Matrix Federation الرسمية مع اسم خادم Matrix الخاص بخادمك المنزلي. يمكنها الكشف عن مشاكل نظام أسماء النطاقات (DNS) الشائعة، والتفويض، والشهادات، وإمكانية الوصول. قد يختلف اسم الخادم في معرّفات المستخدمين عن اسم الجهاز أو الخادم الوكيل الذي يُشغّل Synapse، لذا تحقق من نقطة نهاية الاتحاد المُكوّنة والتفويض بدلاً من افتراض أن نطاق معرّف المستخدم هو الذي يستضيف Synapse مباشرةً.
تُشير وثائق الاتحاد في Synapse إلى أن منفذ الاتحاد الافتراضي هو TCP 8448، بينما يمكن لعمليات النشر المُفوضة أو المُدارة بوكيل عكسي استخدام HTTPS على المنفذ 443. يجب أن يكون المنفذ المعني قابلاً للوصول من خوادم منزلية أخرى، وقد تحتاج جدران الحماية الصادرة أيضًا إلى السماح بحركة مرور الاتحاد. تحقق من قواعد جدار الحماية الواردة والصادرة المتطابقة، ثم أعد الاختبار من خلال أداة اختبار الاتحاد. لا تفتح كلا المنفذين بشكل عشوائي إذا كان نظامك مُهيأً لاستخدام منفذ واحد فقط.
تشير نتيجة الخطأ المتعلقة بالشهادة أو نظام أسماء النطاقات (DNS) أو التوجيه إلى مشكلة في التكوين أو إمكانية الوصول إلى الشبكة، وليس إلى سعة الخادم. راجع سجلات نظام أسماء النطاقات (DNS) والتفويض لاسم خادم Matrix، وسلسلة شهادات TLS الخاصة بالوكيل العكسي، وما إذا كان الوكيل يُعيد توجيه مسارات الاتحاد إلى Synapse. تُشير وثائق Synapse إلى أن إعادة التوجيه الدائم 308 لا يتم اتباعها من قِبل خوادم الاتحاد في بعض الإعدادات، لذا تحقق من عمليات إعادة التوجيه غير المتوقعة أيضًا. أصلح الفحص الفاشل المحدد وأعد الاختبار قبل تغيير عدد العمال أو حدود المعدل.
المرجع: إعداد اتحاد Synapse واستكشاف الأخطاء وإصلاحها ، ودليل جدار الحماية Synapse .
تحقق مما إذا كان أحد الخوادم البعيدة في فترة انتظار إعادة المحاولة
يُعلِم برنامج Synapse مؤقتًا بعدم اتصال وجهة بعيدة بعد فشل طلبات الاتحاد. تستخدم تأخيرات إعادة المحاولة آلية التراجع، لذا قد تؤدي حالات الفشل المتكررة إلى ظهور الرسائل أو عمليات الانضمام التي تتضمن تلك الوجهة متأخرة. هذا لا يعني بالضرورة أن خادمك الرئيسي بطيء، فقد يكون خادمًا بعيدًا واحدًا غير قابل للوصول أو يفشل في الاستجابة للطلبات.
يمكن للمسؤولين فحص واجهة برمجة تطبيقات إدارة الاتحاد الخاصة بـ Synapse، والتي توثق ذلك GET /_synapse/admin/v1/federation/destinations. استخدم رمز وصول مسؤول الخادم واحتفظ به سراً. راجع سجلات الوجهة وحقول إعادة المحاولة للخادم الرئيسي المعني في الغرفة المتأثرة. تساعد هذه السجلات في تحديد وقت إعادة محاولة الاتصال بالوجهة، لكنها لا تثبت وحدها سبب فشل الاتصال. اربطها بسجلات Synapse، وسجلات الوكيل، واختبارات DNS/TLS، والأوقات التي أبلغ فيها المستخدمون عن المشكلات.
واجهة برمجة تطبيقات إدارة الاتحاد موثقة على أنها تجريبية وقابلة للتغيير. تجنب استخدامها في البرمجة النصية كما لو كانت واجهة برمجة تطبيقات عميل عامة مستقرة. كما توثق Synapse عملية إعادة ضبط مهلة الاتصال التي قد تؤدي إلى محاولة أخرى في الخلفية لوجهة في فترة انتظار. تعامل مع ذلك كإجراء تشخيصي أو علاجي فقط بعد تصحيح أو فهم سبب العطل الأساسي؛ إذ لا يمكن لمسح فترات الانتظار بشكل متكرر أن يجعل خادمًا بعيدًا غير سليم يستجيب. لا يعني تلقي استجابة HTTP ناجحة من نقطة نهاية إعادة الضبط أن محاولة الاتحاد في الخلفية قد اكتملت بالفعل.
المرجع: واجهة برمجة تطبيقات إدارة اتحاد Synapse . قد تتغير حالة واجهة برمجة التطبيقات التجريبية والحقول المتاحة مع إصدار Synapse، لذا تحقق من وثائق الإصدار الذي تستخدمه قبل استخدام أي عملية.
قم بقياس Synapse وقاعدة بياناته قبل التوسع
فعّل نقطة نهاية مقاييس بروميثيوس الخاصة بـ Synapse فقط على شبكة داخلية موثوقة أو خلف ضوابط وصول. /_synapse/metricsيوضح دليل المراقبة الرسمي كيفية عرضها من خلال مستمع مقاييس أو مستمع HTTP موجود. قد تتضمن المقاييس تفاصيل تشغيلية؛ لذا لا تنشر نقطة النهاية هذه علنًا. إذا كنت تجمع المقاييس بالفعل، فقارن وقت الانضمام البطيء مع وقت وحدة المعالجة المركزية، والذاكرة، وزمن استجابة الطلب، ومدة معاملة قاعدة البيانات، ونشاط الاتحاد الوارد والصادر.
استخدم الرسوم البيانية للتمييز بين التحميل الزائد العام والتأخيرات الخاصة بالاتحاد. إذا تباطأت طلبات العميل العادية ومعاملات قاعدة البيانات بالتزامن مع عمليات الربط، فافحص ضغط وحدة المعالجة المركزية والذاكرة على المضيف، وحالة PostgreSQL، وحدود الاتصال، وزمن استجابة القرص، والاستعلامات طويلة الأمد. إذا ظل نشاط الغرفة المحلية سريع الاستجابة، ولكن إحدى الوجهات البعيدة تعاني من أعطال أو تأخيرات في إعادة المحاولة، فأعطِ الأولوية لإمكانية الوصول إلى الاتحاد وذلك الخادم البعيد. إذا تأثرت غرفة كبيرة واحدة فقط، فقد يؤثر كل من حالة الغرفة وعدد الخوادم المشاركة؛ قارنها بغرفة أصغر قبل استخلاص النتائج.
يوصي دليل Grafana الخاص بـ Synapse بفحص وقت إرسال الرسائل، واستهلاك وحدة المعالجة المركزية والذاكرة، وعدد معاملات قاعدة البيانات ومدتها، ورسوم بيانية للاتحاد. لا يُعدّ ارتفاع عدد المعاملات بالضرورة هو السبب الرئيسي للاختناق؛ فالمدة وحمل النظام عاملان مهمان أيضًا. راجع أسماء المقاييس في إصدار Synapse المُثبّت لديك، ووثائق لوحة التحكم الحالية، حيث تم تغيير أسماء المقاييس بمرور الوقت.
المراجع: مراقبة Synapse Prometheus وفهم Synapse من خلال رسوم Grafana البيانية .
تحقق من تقييد سرعة الاتصال عند الانضمام إلى الغرفة وانفجارات الشبكة
يفرض Synapse rc_joinsحدودًا منفصلة للانضمام المحلي والانضمام عن بُعد. قد يتطلب الانضمام عن بُعد جهدًا أكبر من الانضمام إلى غرفة يشارك فيها الخادم بالفعل. كما يوفر Synapse rc_joins_per_roomميزةً تحدّ من عمليات الانضمام الأخيرة إلى غرفة ما للمساعدة في تخفيف موجات الانضمام الجماعي. إذا أشارت السجلات أو استجابات العملاء إلى وجود قيود على معدل الانضمام، فتحقق من هذه الإعدادات وحجم عمليات الانضمام الأخيرة قبل تغييرها.
لا ترفع حدود معدل الطلبات كحلٍّ عام لتحسين السرعة. فالحدود الأعلى قد تزيد الحمل على خادمك وخوادمك المنزلية الأخرى، وقد تُضعف الحماية من هجمات الانضمام المفاجئة. إذا وصل تدفقٌ كبيرٌ من عمليات الترحيل أو الإعداد إلى حدٍّ مُحدد، فحدد هذا الحد بدقة، وراجع القيم الموثقة الحالية لإصدار Synapse الخاص بك. فكّر في توزيع عبء عمل الانضمام على فترات زمنية. غيّر قيمةً واحدةً ذات صلة في كل مرة، واحتفظ بالإعدادات السابقة، وراقب معدلات الخطأ واستخدام الموارد بعد إعادة التحميل أو إعادة التشغيل حسب متطلبات النشر.
مرجع: إعدادات Synapse:rc_joins وإعدادات Synapse:rc_joins_per_room . قد تختلف الإعدادات الافتراضية والخيارات المدعومة باختلاف الإصدار؛ قارنها بالإصدار المثبت لديك قبل التعديل.
استخدم اختبار الربط المُتحكم به
- اختر غرفة واحدة متأثرة وسجّل اسم الغرفة المستعار أو معرّفها، وخادم المستخدم الذي انضم إليها، والوقت، وخطأ العميل بالتحديد. لا تُدرج رموز الوصول في سجل الدعم.
- تحقق من أداة اختبار الاتحاد لمعرفة اسم الخادم الخاص بك وتأكد من نقطة نهاية الاتحاد والشهادة ومسار الوكيل المُكوّن.
- راجع سجلات Synapse في الفترة الزمنية المحيطة بذلك التاريخ بحثًا عن حالات فشل في الربط، أو أخطاء في الوجهة البعيدة، أو مهلات زمنية، أو استجابات متعلقة بحدود معدل الطلبات. ابحث في سجلات الخادم الوكيل العكسي وقاعدة البيانات عن حالات تأخير مماثلة.
- افحص واجهة برمجة تطبيقات إدارة الاتحاد للتحقق من حالة إعادة المحاولة المرتبطة بالوجهات البعيدة ذات الصلة. قارن الغرف المتأثرة بغرفة تحكم تنضم إليها فورًا.
- قارن مقاييس بروميثيوس ومقاييس المضيف خلال نفس الفترة الزمنية. ابحث عن ارتفاع في زمن استجابة الطلبات، أو مدة معاملات قاعدة البيانات، أو استخدام وحدة المعالجة المركزية، أو ضغط الذاكرة، أو زيادة مفاجئة في نشاط الاتحاد.
- قم بإجراء تصحيح واحد محدد - مثل إصلاح مشكلة DNS/TLS/proxy، أو حل مشكلة عنق الزجاجة في قاعدة البيانات، أو تعديل قيد معدل مؤكد - ثم كرر نفس الاختبار وقارن النتائج.
الافتراضات الشائعة التي يجب تجنبها
- "بطء عملية الانضمام يعني أن منفذ 8448 الخاص بخادمي مغلق." ليس بالضرورة. قد يستخدم التفويض أو الخادم الوكيل العكسي المنفذ 443. تحقق من نقطة نهاية الاتحاد المُكوّنة فعليًا واختبرها.
- يُثبت اختبار الاتحاد الناجح سرعة كل عملية انضمام إلى الغرفة. يتحقق هذا الاختبار فقط من إعدادات الاتحاد الشائعة والاتصال. مع ذلك، قد تؤثر حالة الخادم البعيد، وحالة الغرفة، والحمل المحلي، وأداء قاعدة البيانات على عملية الانضمام. لذا، اختبر الغرفة المتأثرة وافحص سجلاتها.
- "يحدث تأخير في عملية الربط دائمًا من خلال منصة Synapse الخاصة بي." وتحذر وثائق تكوين Synapse من أن التأخير الملحوظ في الربط قد ينشأ من أي من نقطتي النهاية أو من الشبكة بينهما. قارن الوجهات واجمع الأدلة من كلا الطرفين كلما أمكن ذلك.
- "إضافة عمال أو زيادة حدود معدل النقل هي الحل الأول." هذه التغييرات مفيدة فقط عندما تشير القياسات إلى وجود مشكلة في السعة أو تقييد معدل النقل. حدد أولاً ما إذا كانت المشكلة تتعلق بالاتصال، أو إعادة المحاولة عن بُعد، أو التشبع المحلي، أو زمن استجابة قاعدة البيانات، أو تحديد معدل الربط.
تأكد من نجاح الإصلاح
أعد اختبار الانضمام نفسه بعد التغيير. تأكد من انضمام المستخدم بنجاح، وأن الوجهة المتأثرة لم تعد تفشل بشكل متكرر، وأن أداة اختبار الاتحاد تُبلغ عن الفحوصات ذات الصلة بشكل صحيح، وأن زمن استجابة الطلب/قاعدة البيانات يعود إلى نطاقه الطبيعي. راقب تكرار المشكلة خلال فترة ازدحام لاحقة؛ فمحاولة ناجحة واحدة لا تُثبت أن الخادم البعيد أو الشبكة يعملان بشكل سليم باستمرار.
إذا كانت مقاييسك المحلية وفحوصات الاتحاد تبدو سليمة، ولكن خادمًا منزليًا واحدًا فقط عن بُعد لا يزال يتعطل، فشارك الطابع الزمني والوجهة ورمز الخطأ المُعقّم ومعرّفات الطلبات ذات الصلة مع مسؤولي ذلك الخادم. إذا تأثرت عدة غرف ووجهات إلى جانب بطء الطلبات المحلية، فتحقق من سعة Synapse وPostgreSQL قبل ضبط سلوك الاتحاد. سجّل إصدار Synapse الخاص بك مع ملاحظات الحادث، نظرًا لتطور تفاصيل التكوين وواجهة برمجة تطبيقات الإدارة.