سؤال

قام متجرنا بتطوير حل قليل من الويب / SMS / DB لعشرات عمليات تثبيت عميل. تحتوي التطبيقات على بعض متطلبات الأداء في الوقت الفعلي، وهي جيدة بما يكفي لتعمل بشكل صحيح. المشكلة هي أن العملاء (مالكي خوادم الإنتاج) يستخدمون نفس الخادم / قاعدة البيانات للتخصيصات التي تسبب مشاكل في أداء التطبيقات التي أنشأناها ونشرها.

بعض الأمثلة على تخصيصات العملاء:

  • إضافة جداول كبيرة مع العديد من أنواع البيانات النصية للأعمدة التي تحصل على أنواع البيانات الأخرى في الاستعلامات
  • لا توجد مفاتيح أساسية أو فهارس أو قيود FK
  • استخدام البرامج النصية الخارجية التي تستخدم count(*) from table where id = x, في حلقة من البرنامج النصي، لتحديد كيفية إنشاء المزيد من الاستفسارات في وقت لاحق من نفس البرنامج النصي. (لا توجد إجراءات كبيرة يمكن للمخطط تحسين أو تفعل كل شيء في تمريرة واحدة)
  • يتم إنشاء / مملوكة جميع ملفات التعليمات البرمجية الجديدة على الخادم، مع أذونات 0777

لا يأخذ العملاء اقتراحات / انتقادات جيدا. إذا مخرجنا فقط ومحاولة منفذ / تغيير البرامج النصية بأنفسنا، فإن الرمز القديم يمكن أن يعود، قم بإدخال أي تغييرات تجعلنا نجعلها! أو مع معرفة محدودة لحالات استخدامها، نقطع الوظائف أثناء محاولة تحسين تغييراتهم.

سؤالي هو: كيف يمكننا الحد من الموارد للاستعلام / التطبيقات الأخرى التي نخلقها ونشرها؟ هل هناك أي خيارات براغماتية في سيناريوهات مثل هذا؟ تقفز أنفسنا في وجود حل OSS، ولكن يبدو أنه أصبح مسؤولية.

نستخدم PG 8.3 يعمل على مجموعة من Distros Linux. يفضل العملاء PHP، لكن البرامج النصية SHELL، PERL، PYTHON، و PLPGSQL تستخدم جميعها على النظام في نموذج واحد أو آخر.

هل كانت مفيدة؟

المحلول

بدأت هذه المشكلة حوالي دقيقتين بعد أن تم منح العميل الأول إمكانية الوصول الكامل إلى الكمبيوتر الأول، ولم يذهب بعيدا منذ ذلك الحين. في أي وقت شخص يحصل أولويته على عمل موجه نحو العمل بسرعة سيكون قذرا حوله ومسمار الأشياء للجميع. هذا فقط كيف تعمل الأمور، لأن التصميم والتنفيذ السليم أصعب من اختراق رخيصة. لن تحل هذه المشكلة، كل ما يمكنك فعله هو معرفة كيفية جعل العميل أسهل للعمل معك أكثر من ضدك. إذا قمت بذلك بشكل صحيح، فستبدو كخدمة ممتازة بدلا من المزعجة.

أولا قبالة، جانب قاعدة البيانات. هناك الآن طريقة للتحكم في موارد الاستعلام في postgresql. الصعوبة الرئيسية هي أن أدوات التحكم في وحدة المعالجة المركزية "لطيفة"، ولكن إذا لم تكن قاعدة البيانات لائقا في ذاكرة الوصول العشوائي، فقد يكون استخدام I / O جيدا الذي يقتلك. انظر الى هذا رسالة المطور لخص القضايا هنا.

الآن، إذا كان ذلك في الواقع، فإن العملاء يحترقون، يمكنك استخدام تقنيين لتحسين هذا الموقف:

  • تثبيت وظيفة C التي تغير أولوية العملية (مثال 1, مثال 2) وتأكد كلما كان يدير شيئا ما يتم استدعاؤه أولا (ربما ضعه في ملف تكوين PSQL الخاص بهم، فهناك طرق أخرى).
  • اكتب برنامج نصي يبحث عن عمليات مدير مكتب البريد المزعج من قبل Userid و REDICE لهم، وجعله يعمل في كثير من الأحيان في كرون أو وكهيبون.

يبدو أن مشكلتك ليست هي عمليات الاستعلام الخاصة أنها قيد التشغيل، ولكن التعديلات الأخرى التي تتخذها إلى الهيكل الأكبر. هناك طريقة واحدة فقط للتعامل مع ذلك: يجب عليك التعامل مع العميل كأنها متسلل واستخدم مناهج هذا الجزء من حقل أمان الكمبيوتر للكشف عن الأمور عند المسمار. عنجد! قم بتثبيت نظام الكشف عن التسلل مثل TripWire على الخادم (هناك أدوات أفضل، وهذا فقط المثال الكلاسيكي)، ولديه تنبيهك عند لمس أي شيء. ملف جديد هذا 0777؟ يجب أن تقفز مباشرة من تقرير المعرفات المناسبة.

في جانب قاعدة البيانات، لا يمكنك الكشف مباشرة عن قاعدة البيانات التي يتم تعديلها بشكل مفيد. يجب عليك القيام PG_DUMP من المخطط كل يوم في ملف (pg_dumpall -g. و pg_dump -s., ، ثم فرق ذلك مقابل الأخير الذي قمت بتسليمه وتنبهك مرة أخرى عند تغييره. إذا قمت بإدارة ذلك جيدا، فإن جهة الاتصال مع العميل يتحول إلى "لاحظنا أنك تغيرت على الخادم ... ما الذي تحاول إنجازه بهذا؟" مما يجعلك تبدو وكأنك تولي اهتماما بالفعل. يمكن أن يتحول إلى فرصة مبيعات، وقد يتوقفون عن الاضطراب بأشياء أكبر بكثير معرفة أنك ستقبض عليها على الفور.

الشيء الآخر يجب أن تبدأ في القيام به على الفور هو تثبيت أكبر عدد ممكن من برامج التحكم في الإصدار عند كل مربع عميل. يجب أن تكون قادرا على تسجيل الدخول إلى كل نظام، قم بتشغيل أداة الحالة / DIFF المناسبة للتثبيت، ومعرفة ما تم تغييره. الحصول على تلك الرسالة إليك بانتظام أيضا. مرة أخرى، هذا يعمل بشكل أفضل إذا كان جنبا إلى جنب مع شيء يقيم المخطط كمكون على ما يديره. لا يكفي الناس يستخدمون نهج التحكم في الإصدار الخطير على التعليمات البرمجية التي تعيش في قاعدة البيانات.

هذه هي المجموعة الرئيسية من الأساليب الفنية مفيدة هنا. ما تبقى من ما لديك هو مشكلة استشارية كلاسيكية لإدارة العميل هذه مشكلة أكبر بكثير من مشكلة الكمبيوتر. ابتهج، قد يكون من الأسوأ - مساعدة FSM إذا منحتهم وصول ODBC واكتشفوا أنه يمكنهم كتابة استفساراتهم في الوصول أو شيء بسيط مثل هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top