نقوم بطرد المستخدمين من قاعدة معلومات الخادم. تحسين أداء خدمات الويب لم يتم تعيين الاتصال الحالي لجلسة تكوين

18.08.2023

تم تنفيذه في الإصدار 8.3.9.1818.

في الإصدار 8.3.9، أكملنا عددًا كبيرًا من المهام لتحسين آليات النظام الأساسي المختلفة. وهنا أود أن أتحدث عن واحد منهم. يعد هذا تحسنًا في أداء خدمات الويب.

إعادة استخدام الجلسات

يرجع النقص في أداء خدمات الويب إلى حقيقة أن كل مكالمة إلى خدمة ويب كان لها عبء كبير في إنشاء الجلسة وإنهائها. علاوة على ذلك، أثناء الإنشاء، في كل مرة يتم فيها تنفيذ معالج SetSessionParameters()، والذي يمكن أن يكون "ثقيلًا" تمامًا في التكوين النموذجي.

وبالإضافة إلى ذلك، كان هناك عيب وظيفي. وكانت خدمات الويب عديمة الجنسية. هذا لم يسمح لنا بتنفيذ المنطق الذي يستخدم ثبات الحالة بين مكالمات خدمة الويب.

في الإصدار 8.3.9 قمنا بتحسين آلية خدمات الويب (خدمات SOAP، خدمات HTTP، خدمات OData). ونتيجة لذلك، زادت إنتاجيتهم حوالي 10 مرات.

لقد أجرينا اختبارات على التكوين القياسي للمحاسبة المؤسسية. لقد أضفنا خدمات HTTP إليها والتي تقوم بالاختيارات من دليل الأطراف المقابلة. يتكون الاختبار من قيام العميل بإجراء 100 مكالمة متتالية للخدمة. في وضع التشغيل القديم، كان هذا يتطلب 29.9 ثانية. في أوضاع التشغيل الجديدة، بمعدل 3 ثوانٍ.

تم تحقيق هذه النتائج نظرًا لأننا قمنا بتنفيذ استراتيجيتين مختلفتين لضمان إعادة استخدام الجلسة:

  • إعادة الاستخدام التلقائي للجلسات من المجمع؛
  • إدارة الجلسات باستخدام رؤوس HTTP.

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

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

مثال آخر هو استلام/وضع الملفات في تكوين تدفق المستندات عبر خدمات http. يمكن استخدام نفس المستخدم الخاص لمثل هذه العمليات.

تعني استراتيجية إدارة الجلسة اليدوية أن العميل يدير بشكل مستقل عدد الجلسات ومدتها. تعتبر هذه الإستراتيجية مناسبة بشكل أفضل للأنظمة المتكاملة للغاية داخل مؤسسة واحدة. يمكنك تنفيذ الخوارزمية الخاصة بك والتي ستتحكم في مدة الجلسات وعددها.

الضوابط

يمكنك تحديد الحاجة إلى استخدام إستراتيجية أو أخرى في شجرة كائنات التكوين، وإذا لزم الأمر، يمكنك تجاوزها في ملف النشر default.vrd. في شجرة كائنات التكوين، أضفنا خاصيتين جديدتين إلى خدمة الويب وكائنات خدمة HTTP:

  • يمكن أن تأخذ إعادة استخدام الجلسة القيم التالية: الاستخدام تلقائيًا، أو الاستخدام، أو عدم الاستخدام. تعمل قيمة الاستخدام التلقائي على تمكين إعادة الاستخدام التلقائي للجلسات من المجمع، كما تعمل قيمة الاستخدام على تمكين إدارة الجلسة باستخدام رؤوس HTTP.
  • في خاصية SessionLifeTime، يمكنك تحديد عدد الثواني التي ستكون فيها الجلسة خاملة قبل أن ينهيها النظام الأساسي تلقائيًا.

تنشأ الحاجة إلى إجبار المستخدم على الإقلاع عن التدخين بشكل أساسي في الحالات التالية:

  • تحديث قاعدة المعلومات؛
  • إضافة كائن بيانات تعريف جديد إلى التكوين؛
  • تنفيذ الأعمال الوقائية والإصلاحية على الخادم؛
  • تمنع جلسة المستخدم المعلقة التطبيق من إعادة التشغيل.

سنحاول في هذه المقالة إخبارك بكيفية إنهاء جلسة المستخدم، وما هي الأدوات التي يمتلكها المسؤول في الترسانة لتنفيذ هذه المهمة، وما هي خيارات الإنهاء التي يوفرها إصدار الملف وتلك التي يوفرها إصدار خادم العميل 1C.

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

إغلاق الجلسات من المكوّن

عند إجراء تغييرات على بنية قاعدة البيانات، لن تتوفر تحديثات التكوين الديناميكي. وتظهر نافذة المعلومات على الشاشة (الشكل 1).

تسلسل الإجراءات في هذه الحالة واضح:

  1. يجب عليك النقر فوق الزر "إنهاء الجلسات والتكرار"؛
  2. انتظر نافذة إعادة هيكلة قاعدة البيانات؛
  3. انقر فوق "موافق".

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

إنهاء الجلسات مباشرة من البرنامج

تحتوي معظم منتجات 1C القياسية، الإصدار 8، على آلية تسمح لك بإنهاء عمل المستخدم بسهولة عن بعد وتزويد المسؤول بالوصول الحصري إلى قاعدة البيانات. هذه هي معالجة "حظر الاتصالات بقاعدة المعلومات".

يمكنك العثور عليه في أحد العنوانين:

  1. في إحدى القوائم الفرعية لقسم "الخدمة"؛
  2. الذهاب إلى العمليات->قسم المعالجة.

الشكل 2

مظهريتم عرض المعالجة في الشكل 2.

مميزات هذه المعالجة:

  1. يؤدي تحديد المربع أو إلغاء تحديده والنقر فوق الزر "تسجيل" إلى تشغيل وإيقاف حظر المستخدم، وحذف الجلسات ومنع إنشاء اتصالات جديدة؛
  2. لا يمكن أن يكون وقت انتهاء الحظر فارغًا أو أقل من وقت بدايته؛
  3. إذا تم تحديد معلمة "رمز الإذن"، فيمكن إدخالها في سطر بدء التشغيل لتجاهل الحظر عن طريق تحديد "/UC" قبل الرمز؛
  4. إذا لم تحدد "رمز الإذن"، فسيكون من الصعب الدخول إلى قاعدة البيانات قبل انتهاء فترة الحظر (في إصدار ملف العمل، يمكنك محاولة حذف ملف 1CVcdn من مجلد قاعدة البيانات)؛
  5. إذا حددت بدلاً من المعلمة "/UC" وكلمة مرور مفصولة بمسافة، "/CAllow Users to Work"، حيث تكون لغة C لاتينية، فيمكنك تعطيل الحظر تمامًا لجميع المستخدمين؛
  6. يؤدي النقر فوق الزر "المستخدمون النشطون" إلى فتح نافذة بها القائمة الكاملةالمستخدمين (الشكل 3)، حيث يمكنك فتح "سجل التسجيل" أو إنهاء جلسة كل مستخدم محدد.

الشكل 3

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

إزالة المستخدمين من RDP

من المهم أن تتذكر أن فصل جلسات المستخدم عن الخوادم لا يكون ممكنًا إلا إذا كانت لديك حقوق معينة للقيام بذلك.

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

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

إزالة المستخدمين عبر وحدة تحكم الخادم

بامتلاك حقوق المسؤول لمجموعة خادم 1C، يجب عليك:


في كثير من الأحيان، عند العمل في وضع الخادم، لا تكون جلسات المستخدم المعلقة مرئية من خلال أدوات النظام الأساسي؛ ولا يمكن حذفها إلا من خلال وحدة التحكم.

الطريقة الأكثر جذرية لمقاطعة الجلسات

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

وبطبيعة الحال، فإن المستخدمين الذين لم يكن لديهم الوقت لإنهاء عملهم وحفظ البيانات سوف يكونون غاضبين للغاية من هذا الموقف المخزي، ولكنه سريع وفعال للغاية.

لإجراء الصيانة الروتينية في قاعدة معلومات 1C:Enterprise 8، غالبًا ما يكون من الضروري الحصول على حق الوصول الحصري إلى قاعدة البيانات. على سبيل المثال، لإجراء نسخة احتياطية لقاعدة البيانات أو إجراء صيانة روتينية على خادم DBMS (إعادة الفهرسة، وما إلى ذلك)، يجب عليك قطع اتصال كافة الجلسات النشطة.

دعونا نلقي نظرة على طريقة بسيطة لفصل المستخدمين عن قاعدة المعلومات باستخدام الوظيفة القياسية لخادم 1C:Enterprise.

الوظيفة القياسية

اسمحوا لي أن أحجز على الفور أننا سنتحدث عن إصدار خادم العميل من 1C:Enterprise 8. لتعطيل الجلسات، دعنا نذهب إلى وحدة تحكم إدارة الخادم. هناك سنجد قاعدة المعلومات المطلوبة في القائمة:

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

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

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

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

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

يبدو إشعار المستخدم بحظر الجلسات بهذا الشكل (اعتمادًا على الرسالة التي أدخلها المسؤول). يظهر كل دقيقة قبل 5 دقائق من فترة الحظر.

عندما تبدأ فترة حظر الجلسة، يظهر إشعار أولاً:

وبعد ذلك تنتهي الجلسة.

يمكن أيضًا تعطيل الجلسات النشطة عن طريق إزالتها من قائمة الجلسات النشطة. يكون هذا الإجراء ضروريًا في بعض الأحيان لإنهاء جلسات العمل المعلقة.

من الناحية العملية، من الأفضل الإبلاغ عن انقطاع اتصال المستخدم مسبقًا لتقليل مخاطر فقدان البيانات التي أدخلها المستخدمون ولكن لم يتم حفظها بعد.

الفرق بين مفهومي الجلسة والاتصال في 1C:Enterprise 8

ماذا ستتعلم من هذه المقالة؟

  • الإجابة الصحيحة على أحد الأسئلة الأكثر شيوعًا عند اجتياز 1C: خبير
  • الغرض وميزات الاتصالات وجلسات 1C
  • ماذا تخزن بيانات الجلسة؟

ما هي الاختلافات بين الجلسة والاتصال؟ هذا السؤال الذي يبدو بسيطًا في اختبار 1C:Expert يربك الكثيرين. على الرغم من الخبرة الكبيرة في البرمجة، لا يستطيع كل متخصص صياغة إجابة واضحة وصحيحة.

في هذه المقالة سوف نقدم تحليلا مفصلا لهذه المشكلة. أولاً، دعونا ننظر بشكل منفصل إلى مفاهيم الجلسة والاتصال في 1C:Enterprise. يرجى ملاحظة أن المعلومات ذات صلة بإصداري النظام الأساسي 8.2.x و8.3.x.

الجلسة 1ج

دعونا نشير إلى دليل المسؤول. ويحدد مفهوم الجلسة على النحو التالي:

تحدد الجلسة المستخدم النشط لقاعدة المعلومات وتدفق التحكم لهذا المستخدم.

يمكننا القول أن مجموعة الخادم لا ترى المستخدمين، بل ترى الجلسات وبيانات الجلسة بدلاً من ذلك. من حيث المبدأ، لا تحتوي وحدة التحكم في إدارة المجموعة على قسم "المستخدمين"، حيث تفهم المجموعة الجلسات كمستخدمين.

وهذا يؤكد التمثيل المرئي لعنصر "الجلسات" - يتم عرض الرمز في شكل مستخدمين.

يجب التوضيح أن المستخدم النشط لا يعني بالضرورة اتصال العميل، فمن الممكن أن يكون أيضًا:

  • مثيل لتطبيق العميل 1C:Enterprise
  • مثيل تطبيق الويب حيث يتم تنفيذ عميل الويب
  • ينسخ الانضمام الخارجي، تم الحصول عليها من كائن V83.COMConnector
  • 1 مثيل لوظيفة الخلفية
  • مكالمة واحدة لخدمة الويب

بيانات الجلسة

دعونا نفكر في مفهوم بيانات الجلسة. تحتوي الجلسة على بعض المعلومات مثل:

  • اسم قاعدة المعلومات
  • رقم الجلسة
  • اسم مستخدم قاعدة المعلومات المصادق عليه
  • لغة الواجهة
  • قيم معلمات الجلسة
  • تخزين مؤقت
  • إحصائيات الجلسة
  • معلومات نماذج الطلبات المُدارة
  • بعض بيانات المنصة الداخلية

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

يتم تخزين بيانات الجلسة على مجموعة من الخوادم، ويكون مدير المجموعة مسؤولاً عن ذلك، وهذا هو الغرض من خدمة بيانات الجلسة. لتسريع الأمور، يتم تخزين بيانات الجلسة مؤقتًا في العمليات المنفذة وفي العملاء الكثيفين.

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

للحفاظ على الجلسة عميل رفيعويوفر عميل الويب إمكانية الوصول إلى المجموعة مرة واحدة على الأقل كل 10 دقائق.

اتصال 1C

الآن دعونا نفهم مفهوم الاتصال. دعونا نلقي نظرة على دليل المسؤول مرة أخرى:

الاتصال هو وسيلة للوصول إلى الجلسات لمجموعة من خوادم 1C:Enterprise، ويحتوي على مجموعة محدودة من بيانات الاتصال، ولا يتم تحديده مع المستخدم النشط.

بمعنى آخر، يسمح الاتصال للجلسة بالوصول إلى المجموعة. في هذه الحالة، يكون عدد الاتصالات محدودًا، وبمجرد عدم حاجة الجلسة إلى أحد الاتصالات، يتم إرجاعه إلى تجمع الاتصالات.

إذا لم تتمكن الجلسة من الوصول إلى المجموعة، أي أن المستخدم خامل، فلن يتم تعيين الاتصال له. وبالتالي، يمكن أن توجد جلسة دون اتصال.

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

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

تُستخدم الاتصالات أيضًا للتواصل بين عمليات المجموعة، أي أن العمليات العاملة (rphost) تتواصل مع مدير المجموعة (عملية rmngr) باستخدام الاتصالات، بدلاً من استخدام الجلسات.

الاختلافات بين الاتصالات والجلسات

من أجل وصف الفرق الرئيسي بين هذه المفاهيم، سنقدم تشبيهًا.

لنفترض أن الجلسة عبارة عن راكب والاتصال عبارة عن سيارة أجرة. عندما يحتاج أحد الركاب إلى العودة إلى المنزل (تحتاج الجلسة إلى الاتصال بالخادم)، فإنه يستدعي سيارة أجرة (يتم تعيين اتصال للجلسة من تجمع الاتصال).

إذا أراد الراكب، بعد وصوله إلى المنزل، الذهاب إلى العمل مرة أخرى، لكن سيارة الأجرة قد غادرت بالفعل (بعد الاتصال، تم قطع الاتصال)، ثم يتصل الراكب بسيارة أجرة جديدة ويمارس عمله (يتم تعيين اتصال جديد لـ الجلسة).

يوضح هذا التشبيه بوضوح أن الجلسة والاتصال ليسا نفس الشيء، ويمكن للجلسة أن تنجو بسهولة من انقطاع الاتصال.

بورميستروف أندريه

1C 8.3 معلمات الجلسة— متغير يقوم بتخزين قيمة المعلمة المطلوبة طوال مدة جلسة المستخدم. في الأساس، هذا نوع من المتغير العام المرتبط بجلسة المستخدم الحالية.

باستخدام معلمات الجلسة في 1C

يتم تعيين معلمات الجلسة برمجياً فقط، واجهة عالميةلا يوجد خيار لتعيين معلمات الجلسة في النظام. يتم ضبطها عادةً عند بدء تشغيل النظام، في "وحدة الجلسة". إذا لم يتم تعريف المعلمة، فسيظهر خطأ عند الوصول إليها.

مثال لإعداد معلمة جلسة 1C

دعونا نلقي نظرة على مثال نموذجي لاستخدام معلمات الجلسة - تعيين المستخدم الحالي. سآخذ مثالا من التحضير ل.

في شجرة البيانات الوصفية سنقوم بإنشائها المعلمة الجديدةالجلسة - المستخدم الحالي، قم بتعيين نوع لها - DirectoryLink.Individuals:

احصل على 267 درس فيديو على 1C مجانًا:

في وحدة الجلسة، سنقوم بإنشاء إجراء يتم من خلاله تحديد معلمة الجلسة الحالية:

رمز الإجراء:

إجراء إعداد معلمات الجلسة (المعلمات المطلوبة) // أبحث عن المادية الشخص حسب اسم المستخدم TechUser = الدلائل. فرادى. FindByName(UserName()) ; // إذا لم يتم العثور عليه، قم بإنشاء واحدة جديدةإذا TechUser. فارغ () ثم NewUser = الدلائل. فرادى. إنشاء عنصر () ؛ مستخدم جديد. الاسم = اسم المستخدم () ؛مستخدم جديد. يكتب() ؛ CurrentUser = NewUser. وصلة؛ إنديف؛