«بيانات Solana بطيئة أو غير مكتملة؟» ما الذي ينبغي فحصه في بنية الاستقبال

تشترك في تدفق سريع من Solana Shreds، لكن لا يصلك سوى عدد ضئيل من الحزم. تُحلَّل بيانات Shreds التي تستقبلها بشكل صحيح، لكن عدد الأجزاء المفقودة كبير إلى حد يمنع استخراج المعاملات. يعمل gRPC على الخادم نفسه، فتحتار في موضع الفحص التالي.
إلى جانب فحص جهة الإرسال، افحص خادم التطبيق ومركز البيانات الذي يستضيفه. حتى عندما يمرّر ERPC بيانات Shreds بسرعة، قد تمنع قيود UDP على المسار أو اختناقات المعالجة في خادم الاستقبال تطبيقك من الاستفادة من تلك السرعة.
اختيار تدفق Shreds يتطلب النظر إلى المسار بأكمله: كيف تصل الحزم، وكيف تتحول إلى بيانات قابلة للاستخدام. وتُعد جودة الشبكة والمسافة وسياسات تشغيل مركز البيانات عوامل أداء مشتركة تؤثر أيضًا في Geyser Yellowstone gRPC، وحركة RPC وواجهات API العادية، وإرسال المعاملات.

سجلات الإرسال والبيانات المستقبَلة القابلة للاستخدام حقيقتان مختلفتان
في طلب دعم تلقاه ERPC مؤخرًا، سجلت قياسات قصيرة المدة من جهة الإرسال نحو 3,400–3,900 حزمة/ثانية. وأفادت جهة الاستقبال بوصول نحو 13 حزمة/ثانية وعدم اكتمال إعادة بناء أي slot.
تعود هذه الأرقام إلى فترات قياس مختلفة، ولم يُؤكَّد أن طرق القياس قابلة للمقارنة. لذلك لا تثبت هذه الأرقام نسبة نجاح التوصيل أو نسبة الفقد. وسجلات جهة الإرسال وحدها لا تثبت الوصول، ولم يُحسم السبب حتى وقت كتابة هذا المقال.
كما أن بضعة آلاف من الحزم في الثانية (PPS) لا تثبت وحدها وجود حمل مرتفع على نحو غير معتاد لخادم للأغراض العامة. ما ينبغي التحقق منه هو ما يحدث على المسار الفعلي، وما الحدود المطبقة، وكيف تتركز الحركة خلال فترات قصيرة، وكيف تتم إدارة الاستقبال، وما الذي يقيسه كل عدّاد.
فرانكفورت نفسها، ومسارات شبكة مختلفة
قد يكون مصدر التدفق وخادم التطبيق كلاهما في فرانكفورت، لكن في مركزي بيانات منفصلين. في هذا الترتيب، قد تغادر الحركة أحد المرفقين، وتعبر شبكة خارجية، ثم تدخل المرفق الآخر. وجود تسمية إقليمية مشتركة لا يثبت أن المرفق أو مشغّل الشبكة أو مجموعة الأجهزة الوسيطة واحدة.
عندما تكون تدفقات ERPC أو خدمات RPC وخادم ERPC VPS أو Bare Metal في الموقع نفسه، تقع خوادم الخدمة وخادم التطبيق في رفوف متقاربة، ويبقى الاتصال بينها على الشبكة الداخلية. هذه هي الفكرة وراء Zero-Distance Communication لدى ERPC: التخطيط لمواضع الأجهزة الفعلية والمسار إلى التطبيق المستقبِل معًا، بما يتجاوز مجرد اختيار المدينة نفسها.

تجنّب الالتفاف عبر شبكة خارجية بين خدمات ERPC وخادم التطبيق يقصّر المسار ويقلل، في هذا الجزء منه، من التعرض لازدحام الشبكات الخارجية وتغيّر مساراتها. ويوفر المسار القصير، إلى جانب الموارد اللازمة للاستقبال والمعالجة، أساسًا للاستفادة من تدفق سريع. تحقّق من النتيجة عند وصول الحزم وعند معالجتها داخل التطبيق.
ظروف الشبكة تؤثر في جميع أنواع الاتصال
تجعل الأجزاء المفقودة المشكلة ظاهرة عند استخدام Shreds، لكن جودة البنية التحتية نفسها تؤثر على نطاق أوسع في استقبال البيانات وطلبات API وإرسال المعاملات. ويغيّر البروتوكول الأعراض التي يراها التطبيق والنقاط التي يجدر قياسها.
| الاتصال | مواضع ظهور آثار الشبكة | ما ينبغي فحصه في التطبيق |
|---|---|---|
| Shreds / UDP | فقد الحزم وتأخرها، ووصول الأجزاء اللازمة لإعادة البناء | Shreds الصالحة والوقت اللازم حتى تصبح إعادة بناء البيانات ممكنة |
| Geyser Yellowstone gRPC | انتظار إعادة الإرسال عبر TCP، وتراكم بيانات التدفق وتأخرها | الوقت اللازم لاستقبال التحديث نفسه ومعالجته |
| RPC وواجهات API والحركة بين الخدمات | الرحلة ذهابًا وإيابًا للطلبات والردود، والانتظار أثناء الازدحام | زمن الاستجابة وتفاوت هذا الزمن |
| إرسال المعاملات | مسار الطلب إلى العقدة المستقبِلة | الزمن من طلب الإرسال حتى رد العقدة |
يدعم التقارب في مواقع الأجهزة وسياسات التشغيل المناسبة كل هذه الحركة. قِس زمن استجابة العقدة المستقبِلة بشكل منفصل عن الزمن حتى إدراج المعاملة وتثبيتها نهائيًا على السلسلة.
Gbps لا يوضح كل ما يتعلق بـPPS ودفعات الحركة
يعبّر عرض النطاق الترددي عن كمية البيانات التي يمكن نقلها بمرور الوقت. ويعبّر PPS عن عدد الحزم التي تُعالج كل ثانية. قد تكون في الاتصال سعة متاحة من عرض النطاق الترددي، ومع ذلك يصطدم بحد لمعدل الحزم أو بقيد يُطبق على UDP. وتتعامل وثائق مزوّدي الخدمات السحابية أنفسهم مع حدود عرض النطاق الترددي وحدود PPS بوصفها قيودًا منفصلة.[1]
لا تصل Shreds بالضرورة بمعدل منتظم. فقد تؤدي دفعة مفاجئة إلى ضغط على طوابير الانتظار يخفيه المتوسط. وإذا تراكمت الحزم بسرعة تتجاوز قدرة جهاز الشبكة أو جهة الاستقبال على معالجتها، فقد تُسقط الحزم التي تتجاوز سعة الطابور.[2]
اسأل مزوّد الاستضافة عن استقبال UDP المستمر، والدفعات القصيرة، وحدود PPS، والقواعد التي تطبقها الحماية من DDoS. الهدف هو تحديد ظروف تسمح بمرور الحركة المطلوبة بأمان، بدلًا من تعطيل الحماية دون تمييز.
عمل gRPC لا يثبت أن استقبال UDP يعمل
يستخدم gRPC القائم على TCP وShreds الخام المنقولة عبر UDP آليات نقل مختلفة. يوفّر TCP إعادة الإرسال والحفاظ على الترتيب، بينما يتضمن gRPC في وضع التدفق تحكمًا في التدفق يراعي قدرة جهة الاستقبال. أما UDP نفسه فلا يعيد إرسال الحزم المفقودة، ولا يجعل المرسِل ينتظر إلى أن يلحق التطبيق المستقبِل بوتيرة البيانات.[3]
لذلك، فإن عمل gRPC على خادم لا يثبت أن مسار UDP أو المستقبِل يعمل بصورة صحيحة. يجب فحص المرشحات الخاصة بكل بروتوكول، والمنافذ، ومسارات التوصيل، والتنفيذ البرمجي للمستقبِل، كلٌّ على حدة. وقد تظهر تأخيرات معالجة gRPC أيضًا في صورة انتظار أو انقطاع الاتصال.
المعاملات/ثانية على gRPC والحزم/ثانية على UDP تقيس وحدات مختلفة في مراحل مختلفة من المعالجة. لا يمكن مقارنتها مباشرةً لحساب حجم البيانات التي وصلت أو معدل الفقد.
من الحزم الواصلة إلى بيانات قابلة للاستخدام
مع مستقبِل يستخدم مقبس UDP قياسيًا، تمر الحزم الواصلة عبر NIC والنواة ومخزن استقبال المقبس قبل وصولها إلى التطبيق. إذا تأخرت المعالجة عن مواكبة الحزم، فقد تُسقط بعد وصولها إلى المضيف. تشمل عدّادات الاستقبال في واجهات Linux الحزم التي تُسقط في مراحل لاحقة، لذلك لا تثبت زيادة عدّاد الاستقبال وحدها أن البيانات وصلت إلى التطبيق.[4]
قد ينشغل طابور استقبال واحد أو نواة CPU واحدة حتى عندما يكون الاستخدام الإجمالي للمعالج منخفضًا. افحص طوابير NIC، وتوزيع المقاطعات، وأداء النواة الواحدة. افصل في التطبيق بين الاستقبال والعمل اللاحق حين يكون ذلك مناسبًا، مع إبقاء عمليات التحليل عالية الكلفة والإفراط في تسجيل السجلات خارج حلقة الاستقبال. يمكن لمخزن استقبال أكبر أن يستوعب دفعات مؤقتة، لكنه لا يعالج عجزًا مستمرًا في قدرة المعالجة.[5]
Shreds هي أجزاء من بيانات الكتلة. يمكن للتصحيح الأمامي للأخطاء (FEC) استعادة البيانات المفقودة باستخدام Shreds الخاصة بالبيانات وShreds الخاصة بالترميز من المجموعة نفسها، لكن إعادة البناء ما تزال تتطلب عددًا كافيًا من الأجزاء. زيادة الحزم المكررة لا تعوّض الأجزاء المفقودة.[6]
بحسب طريقة التنفيذ، قد يتمكن المستقبِل من إعادة بناء الإدخالات (entries) من الأجزاء المتاحة قبل اكتمال الـslot بأكمله.[9] إلى جانب العدد الإجمالي للحزم، قِس Shreds الصالحة وغير المكررة، والبيانات المعاد بناؤها، والزمن حتى يتعرّف التطبيق على الحدث الذي يحتاج إليه.
قِس كل مرحلة ضمن النافذة الزمنية نفسها
طابق الوجهة والمنفذ ونافذة القياس بين الجانبين. يساعد تسجيل المراحل التالية بشكل منفصل على تضييق نطاق الفحص التالي.
| نقطة القياس | ما ينبغي تسجيله | ما الذي يثبته |
|---|---|---|
| جهة الإرسال | سجلات الوجهة المستهدفة وتعريف العدّاد | أي مرحلة من مراحل الإرسال تمت ملاحظتها |
| نقطة دخول المضيف المستقبِل | التقاط حركة UDP المستهدفة وإحصاءات NIC والحزم التي فُقدت أثناء الالتقاط | حجم الحركة الذي كان ظاهرًا عند نقطة الملاحظة تلك |
| نظام التشغيل والمقبس | أخطاء UDP والحزم المسقطة من مخزن الاستقبال والتغيرات في طوابير الانتظار | ما إذا كانت البيانات تتراكم أثناء الاستقبال داخل المضيف |
| إعادة بناء Shreds | Shreds الصالحة وغير المكررة وعمليات إعادة البناء الناجحة والبيانات المفقودة والأخطاء | ما إذا كانت الحزم تنتج البيانات المطلوبة |
| التطبيق | تراكم المعالجة والطوابع الزمنية لرصد الحدث نفسه | ما إذا كانت سرعة الوصول تنعكس على التطبيق |
إذا أظهر الالتقاط عددًا قليلًا من الحزم، فافحص أولًا مرشحه والواجهة التي تُراقب وفقد الحزم أثناء الالتقاط والحزم التي تسقطها NIC. تغطي بعض عدّادات نظام التشغيل المضيف بأكمله أو نطاق أسماء الشبكة؛ تحقّق من نطاقها واربطها بالقياسات المأخوذة من التطبيق المستهدف.[4][5]
غيّر الإعدادات بعد تحديد المرحلة المقيِّدة. قد تؤدي زيادة حجم المخزن أو الحلقة وحدها إلى نقل الاختناق أو إضافة وقت انتظار. توثيق إعدادات مستقبِل ERPC الحالية والفحوصات متاح هنا:
اختر سياسة التشغيل إلى جانب الخادم
توضح Solana Foundation أهمية التحكم في NIC والأنوية المادية وبرامج التشغيل والشبكات للمدقّقين ذوي الأداء العالي. لا ينبغي تطبيق متطلبات تشغيل المدقّق الكامل تلك بحذافيرها على كل مستقبِل Shreds. يحتاج التطبيق المستقبِل إلى إعداد يناسب تدفقه وحمل المعالجة الخاص به.[7]
خفض التكلفة أو استهلاك الطاقة هدف تشغيلي معقول. وتحتاج تطبيقات HFT والتطبيقات العاملة في الوقت الفعلي أيضًا إلى استجابة سريعة من CPU، وقدرة معالجة مستمرة، وفترات انتظار قصيرة على الشبكة. قد ينطوي الاستيقاظ من حالة توفير الطاقة على مفاضلة تتعلق بزمن التأخير.[8]
إلى جانب طرازات CPU وعدد الأنوية، افحص كيفية مشاركة الموارد، وكيفية التعامل مع الحمل المستمر، وشروط حركة UDP، والمسار الفعلي للشبكة.
يراعي ERPC التدفق وبيئة الاستقبال معًا
يعمل ERPC على اختيار مراكز بيانات قريبة من بنية Solana التحتية، وعلى مسارات الشبكة والعتاد وإعدادات التشغيل، ويوفر VPS وBare Metal إلى جانب Shreds وgRPC. يمكنك اختيار VPS يناسب حمل المعالجة لديك، ومقارنته بخيار Bare Metal عندما تريد موارد مادية مخصصة لك وحدك.
كما أن فهم إعداد البيئات التي نوفرها وتشغيلها يدعم استكشاف المشكلات التقنية وإصلاحها. يمكننا مقارنة سجلات جهة الإرسال بقياسات جهة الاستقبال وتحديد فحوصات ملموسة للشبكة أو نظام التشغيل أو التطبيق. في طلب الدعم المعروض هنا، فحصنا قياسات جهة الإرسال وطلبنا قياسات إضافية من جهة الاستقبال.
يسهّل تقييم التدفق وموقع المستقبِل والتنفيذ البرمجي للتطبيق معًا تحديد ما ينقص بين الخدمة التي اخترتها والبيانات التي تحتاج إليها.
قارن ببيئتك الحالية باستخدام الفوترة بالساعة
إذا لم تكن متأكدًا من بيئة الاستقبال لديك، فجرّب خادم ERPC VPS أو Bare Metal بفوترة بالساعة، وقارن باستخدام التدفق والتطبيق نفسيهما. راجع لوحة التحكم للاطلاع على الأسعار الحالية والتوافر وشروط الطلب في منطقتك المفضلة.
ابدأ بإعداد متاح، وسجّل أعداد الاستقبال والبيانات المعاد بناؤها وتراكم المعالجة والطوابع الزمنية لرصد الأحداث نفسها. عند مقارنة الطوابع الزمنية بين المضيفين، تحقّق أيضًا من دقة مزامنة الساعات. كرر الاختبار في أوقات مختلفة وقارن مواضع اختلاف النتائج على المسار. استخدم هذه القياسات لاختيار خادم ومركز بيانات يناسبان تطبيقك.
- VPS: https://erpc.global/ar/vps/
- Bare Metal: https://erpc.global/ar/baremetal/
- لوحة التحكم: https://dashboard.erpc.global/ar/
مقالات ذات صلة
- Solana Stream SDK v4.0.0: https://erpc.global/ar/news/2026/11/07/erpc-solana-stream-sdk-v4-20261107/
- [9] Shreds UDP Forwarding Premium: https://erpc.global/ar/news/2026/11/03/erpc-shreds-udp-forwarding-premium-20261103/
- خادم Discord الرسمي لـValidators DAO: https://discord.gg/C7ZQSrCkYR
مراجع تقنية
- [1] حدود عرض النطاق الترددي وPPS في AWS EC2: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-network-performance-ena.html
- [2] إرشادات استخدام UDP من IETF، دفعات الحركة: https://www.rfc-editor.org/rfc/rfc8085.html#section-3.1.6
- [3] UDP في Linux: https://man7.org/linux/man-pages/man7/udp.7.html
- [3] TCP في Linux: https://man7.org/linux/man-pages/man7/tcp.7.html
- [3] التحكم في التدفق في gRPC: https://grpc.io/docs/guides/flow-control/
- [4] إحصاءات واجهات Linux: https://docs.kernel.org/networking/statistics.html
- [4] سلوك الالتقاط والحزم المفقودة في libpcap: https://github.com/the-tcpdump-group/libpcap/blob/master/doc/README.linux
- [5] التوسع في مكدس الشبكات في Linux: https://docs.kernel.org/networking/scaling.html
- [5] مخازن استقبال المقابس في Linux: https://man7.org/linux/man-pages/man7/socket.7.html
- [5] تقصي إسقاط حزم UDP لدى Red Hat: https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/html/network_troubleshooting_and_performance_tuning/tuning-udp-connections
- [6] نشر الكتل باستخدام Turbine من Anza: https://docs.anza.xyz/consensus/turbine-block-propagation/
- [7] Solana Foundation، عتاد المدقّقين عالي الأداء: https://solana.com/news/high-performance-solana-validators-run-on-bare-metal-hardware
- [8] إدارة وقت خمول CPU في Linux: https://docs.kernel.org/admin-guide/pm/cpuidle.html









