اختناق أداء PostgreSQL LISTEN/NOTIFY: دروس من معالجة ملايين ساعات الاجتماعات

2025-07-11
اختناق أداء PostgreSQL LISTEN/NOTIFY: دروس من معالجة ملايين ساعات الاجتماعات

تعالج Recall.ai ملايين الساعات من بيانات الاجتماعات كل شهر. عانت قاعدة بيانات PostgreSQL الخاصة بها من تعطل بسبب عمليات الكتابة عالية التزامن. كشف التحقيق أن ميزة LISTEN/NOTIFY تكتسب قفل قاعدة بيانات عالميًا أثناء إتمام المعاملة، مما يؤدي إلى تسلسل جميع عمليات الإتمام ويخلق اختناقًا. وقد تم حل المشكلة عن طريق نقل هذه المنطق إلى طبقة التطبيق.

اقرأ المزيد
التطوير مُتزامن عالي

مصيدة في دورة حياة مؤشرات نواة لينكس: حالة عملية كروم التي تنتهي بشكل عشوائي

2025-04-10
مصيدة في دورة حياة مؤشرات نواة لينكس: حالة عملية كروم التي تنتهي بشكل عشوائي

أثناء تحسين زمن بدء تشغيل وسائط الإخراج في Recall.ai ، واجه مهندس خطأ محيراً: عملية كروم كانت تنتهي بشكل عشوائي بعد البدء. تم تعقب السبب الجذري إلى علم `--die-with-parent` في Bubblewrap ومعالجة PR_SET_PDEATHSIG بواسطة نواة لينكس. هذه العلامة تتسبب في تلقي عمليات فرعية إشارة SIGKILL عندما ينتهي مؤشر العملية الرئيسية، وليس عملية الرئيسية نفسها. تفاعلت آلية إدارة مؤشرات العمل في Tokio مع هذا السلوك، مما أدى إلى إنهاء كروم بشكل غير متوقع عندما يتم استرداد مؤشر العملية الرئيسية. أدى إزالة العلم إلى حل المشكلة، لكنه كشف عن جانب غير معروف من نواة لينكس، مما يبرز الحاجة إلى الحذر عند التعامل مع التفاعل بين دورات حياة المؤشرات وعزل العمليات.

اقرأ المزيد
التطوير

تقليل زمن الوصول بنسبة 83% باستخدام علامات عملية لينكس غامضة

2025-03-06
تقليل زمن الوصول بنسبة 83% باستخدام علامات عملية لينكس غامضة

واجه مهندس يعمل على تحسين وظيفة Output Media في Recall.ai مشكلة محيرة: إنهاء عشوائي لعملية Chromium داخل بيئة محصورة. كشف تصحيح الأخطاء العميق عن السبب الرئيسي: دالة prctl(PR_SET_PDEATHSIG, SIGKILL) في نواة لينكس، التي تتبع مؤشرات العمليات الأم وليست العمليات نفسها. تفاعل غير متوقع مع إدارة مؤشرات العمليات في Tokio تسبب في استعادة مؤشرات العمليات الأم، مما أثار إشارة SIGKILL، وأنهى عملية الفرع. أزال إزالة علامة --die-with-parent من Bubblewrap المشكلة، مما أدى إلى تقليل زمن الوصول بنسبة 83%.

اقرأ المزيد