ตัวเลือกของบรรณาธิการ:

การโฆษณา

บ้าน - การกู้คืน
การเชื่อมต่อปัจจุบันไม่มีการกำหนดเซสชัน เราไล่ผู้ใช้ออกจากฐานข้อมูลเซิร์ฟเวอร์

ใช้งานในเวอร์ชัน 8.3.9.1818

ในเวอร์ชัน 8.3.9 เราได้เสร็จสิ้นงานจำนวนมากเพื่อเพิ่มประสิทธิภาพกลไกแพลตฟอร์มต่างๆ ที่นี่ฉันอยากจะพูดถึงหนึ่งในนั้น นี่คือการปรับปรุงประสิทธิภาพของบริการเว็บ

การใช้เซสชันซ้ำ

การขาดประสิทธิภาพของบริการเว็บเกิดจากการที่การเรียกบริการเว็บแต่ละครั้งมีค่าใช้จ่ายจำนวนมากในการสร้างและยกเลิกเซสชัน นอกจากนี้ ในระหว่างการสร้าง แต่ละครั้งที่ตัวจัดการ SetSessionParameters() ถูกดำเนินการ ซึ่งในการกำหนดค่าทั่วไปอาจมี "ภาระหนัก" มาก

นอกจากนี้ยังมีข้อเสียเปรียบด้านการใช้งานอีกด้วย บริการเว็บไม่มีสถานะ สิ่งนี้ไม่อนุญาตให้เราใช้ตรรกะที่ใช้การคงอยู่ของสถานะระหว่างการเรียกบริการเว็บ

ในเวอร์ชัน 8.3.9 เราได้ปรับปรุงกลไกการบริการเว็บ (บริการ SOAP, บริการ HTTP, บริการ OData) ส่งผลให้ผลผลิตเพิ่มขึ้นประมาณ 10 เท่า

เราทำการทดสอบการกำหนดค่าการบัญชีองค์กรมาตรฐาน เราได้เพิ่มบริการ HTTP เข้าไปซึ่งทำการเลือกจากไดเร็กทอรีคู่สัญญา การทดสอบประกอบด้วยไคลเอนต์ทำการเรียกใช้บริการติดต่อกัน 100 ครั้ง ในโหมดการทำงานแบบเก่า ต้องใช้เวลา 29.9 วินาที ในโหมดการทำงานใหม่ โดยเฉลี่ย 3 วินาที

ผลลัพธ์เหล่านี้เกิดขึ้นได้เนื่องจากเราใช้กลยุทธ์ที่แตกต่างกันสองประการเพื่อให้แน่ใจว่ามีการใช้เซสชั่นซ้ำ:

  • การนำเซสชันจากพูลกลับมาใช้ใหม่โดยอัตโนมัติ
  • การจัดการเซสชันโดยใช้ส่วนหัว HTTP

เมื่อใช้เซสชันซ้ำอัตโนมัติ ไคลเอ็นต์จะไม่สามารถควบคุมจำนวนเซสชันและอายุการใช้งานได้ มันถูกจัดสรรเซสชันโดยอัตโนมัติจากพูลเซสชันที่มีอยู่ กลยุทธ์นี้เหมาะสำหรับโหลดสูง บริการสาธารณะซึ่งเข้าถึงได้โดยไคลเอนต์ที่ดำเนินการเทมเพลตและมีสิทธิ์แบบรวม

ตัวอย่างเช่น นี่อาจเป็นระบบอัตโนมัติของกิจกรรมการซื้อขายของร้านค้าปลีกระยะไกล โดยจัดให้มีช่วงที่มีการใช้งานสูงสุดบนเซิร์ฟเวอร์ จะถูกจัดสรรเพื่อการประมวลผล ปริมาณที่ต้องการเซสชัน พวกเขาจะเสร็จสมบูรณ์เมื่อโหลดลดลง

อีกตัวอย่างหนึ่งคือการรับ/วางไฟล์ในการกำหนดค่า Document Flow ผ่านบริการ http ผู้ใช้พิเศษคนเดียวกันสามารถใช้สำหรับการดำเนินการดังกล่าวได้

กลยุทธ์การจัดการเซสชันด้วยตนเองหมายความว่าลูกค้าจัดการจำนวนเซสชันและอายุการใช้งานได้อย่างอิสระ กลยุทธ์นี้เหมาะที่สุดสำหรับระบบที่มีการบูรณาการสูงภายในองค์กรเดียว คุณสามารถใช้อัลกอริธึมของคุณเองซึ่งจะควบคุมอายุการใช้งานของเซสชันและจำนวนเซสชัน

การควบคุม

คุณสามารถกำหนดความจำเป็นในการใช้กลยุทธ์อย่างใดอย่างหนึ่งในแผนผังออบเจ็กต์การกำหนดค่า และหากจำเป็น ให้แทนที่กลยุทธ์ดังกล่าวในไฟล์สิ่งพิมพ์ default.vrd ในแผนผังออบเจ็กต์การกำหนดค่า เราได้เพิ่มคุณสมบัติใหม่สองรายการให้กับบริการเว็บและออบเจ็กต์บริการ HTTP:

  • การใช้เซสชันซ้ำสามารถรับค่าต่อไปนี้: ใช้โดยอัตโนมัติ ใช้ หรือ ห้ามใช้ ค่าใช้อัตโนมัติเปิดใช้งานการนำเซสชันจากพูลกลับมาใช้ใหม่โดยอัตโนมัติ และค่าใช้เปิดใช้งานการจัดการเซสชันโดยใช้ส่วนหัว HTTP
  • ในคุณสมบัติ SessionLifeTime คุณสามารถระบุจำนวนวินาทีที่จะไม่มีการใช้งานเซสชันก่อนที่แพลตฟอร์มจะยุติการทำงานโดยอัตโนมัติ

หากแอปพลิเคชันไคลเอนต์ถูกยกเลิกอย่างผิดปกติ (การเชื่อมต่อขาดหายไปหรือหน้าต่างเบราว์เซอร์ถูกปิด) สิทธิ์การใช้งานไคลเอ็นต์ 1C: Enterprise 8 อาจถูกบล็อก

คุณสามารถปล่อยสิทธิ์การใช้งานไคลเอนต์ที่ถูกล็อคได้โดยการรีบูตพีซีของคุณ

หากแอปพลิเคชันไคลเอนต์ยุติอย่างผิดปกติ เซสชั่นจะถูกพักไว้อีก 20 นาที หลังจากนี้ ในเวอร์ชันก่อน 8.3.5 เซสชันจะถูกลบ ตั้งแต่เวอร์ชัน 8.3.5 เซสชันจะเข้าสู่โหมดสลีปตามค่าเริ่มต้น และจะถูกเก็บไว้ต่อไปอีกวัน เซสชันการนอนหลับไม่ได้ใช้สิทธิ์การใช้งานไคลเอ็นต์ 1C: Enterprise 8

ในเวอร์ชัน 8.3.5 เวลาสำหรับการสลีปเซสชันและเวลาสำหรับการลบเซสชันสลีปที่ไม่ได้ใช้สามารถเปลี่ยนแปลงได้โดยใช้เครื่องมือพิเศษหรือใน 1C Configurator ในกล่องโต้ตอบการดูแลระบบ/การตั้งค่า ฐานข้อมูลโดยการตั้งค่าการตั้งค่าเซสชั่นการนอนหลับที่แนะนำ:

  • เวลาในการหลับ เซสชั่นแฝง - 300
  • เวลาสิ้นสุดสำหรับเซสชันการนอนหลับ - 10

อย่างไรก็ตาม คุณสามารถดูได้ตลอดเวลาว่าใครกำลังหลับอยู่และใครกำลังใช้งานอยู่ผ่านทางคอนโซลเซิร์ฟเวอร์บนแท็บเซสชัน ในคอลัมน์ที่เกี่ยวข้องกัน “กำลังนอนหลับ” จะมีเครื่องหมายใช่/ไม่ใช่

โดยปกติ (ตามเวอร์ชัน บริษัท 1C) คุณสามารถทำงานบนเว็บไคลเอ็นต์ให้เสร็จสิ้นได้โดยใช้คำสั่ง "ไฟล์" - "ออก" ตั้งแต่เวอร์ชัน 8.3.8 คำสั่งปิดเครื่องได้ถูกเพิ่มเข้าไปในส่วนหัวของแอปพลิเคชันถัดจากปุ่ม เกี่ยวกับโปรแกรม- จะแสดงเป็นไฮเปอร์ลิงก์พร้อมชื่อผู้ใช้ปัจจุบัน เมื่อคุณคลิกที่ไฮเปอร์ลิงก์ กล่องโต้ตอบจะเปิดขึ้นพร้อมชื่อผู้ใช้และคำสั่ง ปิดเครื่อง.

แพลตฟอร์มส่ง Ping ลูกค้าไปยังเซิร์ฟเวอร์ 1C ทุก ๆ 5 วินาที (มองเห็นแพ็คเก็ตขนาด 4 ไบต์) ตาม “การส่ง Ping” เซิร์ฟเวอร์จะตรวจสอบความสมบูรณ์ของการเชื่อมต่อกับแอปพลิเคชันไคลเอนต์ เซิร์ฟเวอร์ตีความการไม่มีการส่ง Ping เป็นเวลาประมาณ 2 นาทีเนื่องจากการเชื่อมต่อล้มเหลว

ความแตกต่างระหว่างแนวคิดของเซสชันและการเชื่อมต่อใน 1C:Enterprise 8

คุณจะเรียนรู้อะไรจากบทความนี้?

  • คำตอบที่ถูกต้องสำหรับคำถามยอดนิยมข้อหนึ่งเมื่อผ่าน 1C: ผู้เชี่ยวชาญ
  • วัตถุประสงค์และคุณสมบัติของการเชื่อมต่อและเซสชัน 1C
  • ข้อมูลเซสชั่นเก็บข้อมูลอะไร?

อะไรคือความแตกต่างระหว่างเซสชันและการเชื่อมต่อ? คำถามที่ดูเหมือนง่ายในการสอบ 1C:Expert นี้ทำให้หลายคนสับสน แม้จะมีประสบการณ์ด้านการเขียนโปรแกรมมาพอสมควร แต่ไม่ใช่ว่าผู้เชี่ยวชาญทุกคนจะสามารถกำหนดคำตอบที่ชัดเจนและถูกต้องได้

ในบทความนี้ เราจะให้การวิเคราะห์โดยละเอียดเกี่ยวกับปัญหานี้ ก่อนอื่น มาดูแนวคิดของเซสชันและการเชื่อมต่อใน 1C:Enterprise แยกกัน โปรดทราบว่าข้อมูลนี้เกี่ยวข้องกับแพลตฟอร์มเวอร์ชัน 8.2.x และ 8.3.x

เซสชั่น 1C

โปรดดูคู่มือผู้ดูแลระบบ โดยกำหนดแนวคิดของเซสชันดังนี้:

เซสชันจะกำหนดผู้ใช้ที่ใช้งานอยู่ของฐานข้อมูลและขั้นตอนการควบคุมของผู้ใช้รายนี้

เราสามารถพูดได้ว่าคลัสเตอร์เซิร์ฟเวอร์ไม่เห็นผู้ใช้ แต่จะมองเห็นเซสชันและข้อมูลเซสชันแทน โดยหลักการแล้ว คอนโซลการจัดการคลัสเตอร์ไม่มีส่วน "ผู้ใช้" คลัสเตอร์จะเข้าใจเซสชันในฐานะผู้ใช้

นี่เป็นการยืนยันการแสดงภาพของรายการ "เซสชัน" - ไอคอนจะแสดงในรูปแบบของผู้ใช้

ควรชี้แจงว่าผู้ใช้ที่ใช้งานอยู่ไม่ได้หมายถึงการเชื่อมต่อไคลเอ็นต์เสมอไป แต่ก็อาจเป็น:

  • อินสแตนซ์ของแอปพลิเคชันไคลเอ็นต์ 1C:Enterprise
  • อินสแตนซ์แอปพลิเคชันเว็บที่เว็บไคลเอ็นต์ถูกดำเนินการ
  • อินสแตนซ์การเชื่อมต่อภายนอกที่ได้รับจากวัตถุ V83.COMConnector
  • 1 อินสแตนซ์ของงานพื้นหลัง
  • 1 โทรไปยังบริการเว็บ

ข้อมูลเซสชัน

ลองพิจารณาแนวคิดของข้อมูลเซสชัน เซสชันประกอบด้วยข้อมูลบางอย่าง เช่น:

  • ชื่อของฐานข้อมูล
  • หมายเลขเซสชัน
  • ชื่อของผู้ใช้ฐานข้อมูลที่ได้รับการรับรองความถูกต้อง
  • ภาษาอินเทอร์เฟซ
  • ค่าพารามิเตอร์เซสชัน
  • การจัดเก็บชั่วคราว
  • สถิติเซสชัน
  • ข้อมูลแบบฟอร์มใบสมัครที่ได้รับการจัดการ
  • ข้อมูลแพลตฟอร์มภายในบางส่วน

ข้อมูลนี้เรียกว่าข้อมูลเซสชัน นอกจากนี้ ผู้ใช้ที่ใช้งานอยู่แต่ละคนจะมีข้อมูลเซสชันของตนเอง และจะเกี่ยวข้องเฉพาะในช่วงระยะเวลาการทำงานของเขาเท่านั้น หากผู้ใช้ออกจากฐานข้อมูล (สิ้นสุดเซสชัน) ข้อมูลเซสชันของเขาจะถูกลบ

ข้อมูลเซสชันจะถูกจัดเก็บไว้ในคลัสเตอร์ของเซิร์ฟเวอร์ โดยผู้จัดการคลัสเตอร์จะรับผิดชอบในเรื่องนี้ และนี่คือสิ่งที่บริการข้อมูลเซสชันมีไว้เพื่อ เพื่อเพิ่มความเร็ว ข้อมูลเซสชันจะถูกแคชไว้ในกระบวนการของผู้ปฏิบัติงานและในไคลเอนต์แบบหนา

เมื่อรีสตาร์ทคลัสเตอร์เซิร์ฟเวอร์ ข้อมูลเซสชันจะถูกเก็บรักษาไว้ หากผู้ใช้ที่ใช้งานอยู่ไม่ได้ทำการเรียกคลัสเตอร์เพียงครั้งเดียวภายใน 20 นาที และเซสชันไม่ได้ถูกกำหนดให้กับการเชื่อมต่อ เซสชันจะถูกลบพร้อมกับข้อมูล

เพื่อรักษาเซสชั่น ไคลเอนต์แบบบางและเว็บไคลเอ็นต์ให้การเข้าถึงคลัสเตอร์อย่างน้อยหนึ่งครั้งทุกๆ 10 นาที

การเชื่อมต่อ 1C

ตอนนี้เรามาทำความเข้าใจแนวคิดเรื่องการเชื่อมต่อกัน มาดูคู่มือผู้ดูแลระบบอีกครั้ง:

การเชื่อมต่อเป็นวิธีการเข้าถึงเซสชันไปยังคลัสเตอร์ของเซิร์ฟเวอร์ 1C:Enterprise ซึ่งมีชุดข้อมูลการเชื่อมต่อที่จำกัด และไม่ได้ระบุตัวตนกับผู้ใช้ที่ใช้งานอยู่

กล่าวอีกนัยหนึ่ง การเชื่อมต่ออนุญาตให้เซสชันเข้าถึงคลัสเตอร์ได้ ในกรณีนี้ จำนวนการเชื่อมต่อจะถูกจำกัด และทันทีที่เซสชันไม่ต้องการอีกต่อไป การเชื่อมต่อก็จะถูกส่งกลับไปยังพูลการเชื่อมต่อ

หากเซสชันไม่ได้เข้าถึงคลัสเตอร์ นั่นคือ ผู้ใช้ไม่ได้ใช้งาน การเชื่อมต่อจะไม่ถูกกำหนดให้กับเขา ดังนั้น เซสชันจึงสามารถดำรงอยู่ได้โดยไม่ต้องเชื่อมต่อ

ควรสังเกตว่าข้อมูลเซสชันถูกเก็บไว้บนเซิร์ฟเวอร์ ดังนั้นหากการเชื่อมต่อขาดหายไปเป็นเวลาน้อยกว่า 20 นาที สิ่งนี้จะไม่ส่งผลกระทบต่อเซสชัน เนื่องจากการเชื่อมต่อเป็นเพียงวิธีการเข้าถึง

เช่น หากคุณเผลอดึงออกมา สายเคเบิลเครือข่ายผู้ใช้จะไม่ได้รับข้อความแสดงข้อผิดพลาดหากเชื่อมต่อสายเคเบิลภายใน 20 นาที ในกรณีนี้ เซสชันจะได้รับการกำหนดการเชื่อมต่อใหม่และทำงานต่อไป ผู้ใช้จะไม่ทราบถึงปัญหาด้วยซ้ำ ยกเว้นว่าอาจจะเกิดการค้างเล็กน้อย

การเชื่อมต่อยังใช้เพื่อสื่อสารระหว่างกระบวนการคลัสเตอร์ นั่นคือ กระบวนการของผู้ปฏิบัติงาน (rphost) สื่อสารกับตัวจัดการคลัสเตอร์ (กระบวนการ rmngr) โดยใช้การเชื่อมต่อ แทนที่จะใช้เซสชัน

ความแตกต่างระหว่างการเชื่อมต่อและเซสชัน

เพื่ออธิบายความแตกต่างที่สำคัญระหว่างแนวคิดเหล่านี้ เราจะให้การเปรียบเทียบ

สมมติว่าเซสชั่นเป็นผู้โดยสารและการต่อเครื่องคือแท็กซี่ เมื่อผู้โดยสารจำเป็นต้องกลับบ้าน (เซสชั่นจำเป็นต้องเชื่อมต่อกับเซิร์ฟเวอร์) ผู้โดยสารจะเรียกแท็กซี่ (เซสชั่นถูกกำหนดการเชื่อมต่อจากพูลการเชื่อมต่อ)

หากถึงบ้านแล้วผู้โดยสารต้องการไปทำงานอีกครั้ง แต่แท็กซี่ออกไปแล้ว (หลังจากเชื่อมต่อการเชื่อมต่อถูกตัดการเชื่อมต่อ) ผู้โดยสารจึงเรียกรถแท็กซี่ใหม่และไปทำธุรกิจของเขา (การเชื่อมต่อใหม่ได้รับมอบหมายให้ เซสชัน)

การเปรียบเทียบนี้แสดงให้เห็นอย่างชัดเจนว่าเซสชันและการเชื่อมต่อไม่เหมือนกัน และเซสชันสามารถรอดพ้นจากการขาดการเชื่อมต่อได้อย่างง่ายดาย

เบอร์มิสตรอฟ อันเดรย์

ในการดำเนินการบำรุงรักษาตามปกติในฐานข้อมูล 1C:Enterprise 8 มักจำเป็นต้องได้รับการเข้าถึงฐานข้อมูลแบบเอกสิทธิ์เฉพาะบุคคล ตัวอย่างเช่น หากต้องการสำรองฐานข้อมูลหรือบำรุงรักษาตามปกติบนเซิร์ฟเวอร์ DBMS (การจัดทำดัชนีใหม่ ฯลฯ) คุณต้องยกเลิกการเชื่อมต่อเซสชันที่ใช้งานอยู่ทั้งหมด

มาดูวิธีง่ายๆ ในการยกเลิกการเชื่อมต่อผู้ใช้จากฐานข้อมูลโดยใช้ฟังก์ชันมาตรฐานของเซิร์ฟเวอร์ 1C:Enterprise

ฟังก์ชั่นมาตรฐาน

ฉันขอจองทันทีว่าเราจะพูดถึง 1C:Enterprise 8 เวอร์ชันไคลเอ็นต์-เซิร์ฟเวอร์ หากต้องการปิดใช้งานเซสชัน ไปที่คอนโซลการดูแลระบบเซิร์ฟเวอร์ ที่นั่นเราจะพบฐานข้อมูลที่จำเป็นในรายการ:

โดยไปที่คุณสมบัติความปลอดภัยของข้อมูล ให้ตั้งค่าตัวเลือก “เปิดใช้งานการบล็อกการเริ่มต้นเซสชัน” ในกรณีนี้ คุณอาจต้องระบุข้อมูลเข้าสู่ระบบ/รหัสผ่าน บัญชีผู้ดูแลระบบฐานข้อมูล

อย่าลืมตั้งระยะเวลาล็อคเซสชั่น คุณควรตรวจสอบให้แน่ใจด้วยว่าในขณะที่เซสชันถูกบล็อก คุณต้องหยุดทั้งหมด งานพื้นหลัง- ทำได้โดยใช้ตัวเลือก "เปิดใช้งานการบล็อกงานประจำ"

หากจำเป็น คุณสามารถตั้งค่าข้อความของข้อความให้กับผู้ใช้ที่พวกเขาจะได้รับแจ้ง 5 นาทีก่อนที่เซสชันจะถูกบล็อก รวมถึงรหัสอนุญาตสำหรับการเข้าสู่ฐานข้อมูลในช่วงระยะเวลาการบล็อกเซสชัน

รหัสอนุญาตสามารถใช้เพื่อเข้าสู่ฐานข้อมูลเพื่อดำเนินการบำรุงรักษาตามปกติในขณะที่เซสชันอื่นไม่ได้ใช้งาน คุณต้องป้อนรหัสอนุญาตเมื่อเชื่อมต่อกับฐานข้อมูลโดยใช้พารามิเตอร์ ตัวอย่างเช่น นี่คือลักษณะที่พารามิเตอร์ที่ส่งไปยังเซิร์ฟเวอร์จะมีลักษณะเช่นนี้ หากรหัสสิทธิ์คือ "123456"

โดยการเข้าสู่ฐานข้อมูลด้วยวิธีนี้ เราจะได้รับการเข้าถึงฐานข้อมูลแต่เพียงผู้เดียว เซสชันอื่นจะไม่สามารถเข้าร่วมกับเราได้

การแจ้งเตือนผู้ใช้ว่าเซสชันถูกบล็อกมีลักษณะดังนี้ (ขึ้นอยู่กับข้อความที่ผู้ดูแลระบบป้อน) จะปรากฏทุกนาที 5 นาทีก่อนช่วงเวลาปิดกั้น

เมื่อระยะเวลาการบล็อกเซสชันเริ่มต้นขึ้น การแจ้งเตือนจะปรากฏขึ้นก่อน:

หลังจากนั้นเซสชั่นจะสิ้นสุดลง

เซสชันที่ใช้งานอยู่สามารถปิดใช้งานได้โดยลบออกจากรายการเซสชันที่ใช้งานอยู่ การดำเนินการนี้บางครั้งจำเป็นเพื่อยุติเซสชันที่หยุดทำงาน

ในทางปฏิบัติ ควรแจ้งล่วงหน้าเกี่ยวกับการขาดการเชื่อมต่อของผู้ใช้ล่วงหน้าเพื่อลดความเสี่ยงในการสูญเสียข้อมูลที่ผู้ใช้ป้อนแต่ยังไม่ได้บันทึก



 


อ่าน:


ใหม่

วิธีฟื้นฟูรอบประจำเดือนหลังคลอดบุตร:

การใช้สไตล์ใน Excel วิธีสร้างสไตล์ใหม่ของคุณเอง

การใช้สไตล์ใน Excel วิธีสร้างสไตล์ใหม่ของคุณเอง

หากคุณใช้ตัวเลือกเดียวกันนี้ในการจัดรูปแบบเซลล์ในเวิร์กชีตในสเปรดชีตของคุณอย่างสม่ำเสมอ ขอแนะนำให้สร้างสไตล์การจัดรูปแบบ...

เกิดข้อผิดพลาดอะไรระหว่างการติดตั้ง?

เกิดข้อผิดพลาดอะไรระหว่างการติดตั้ง?

หมายเหตุ: โปรแกรม AutoLISP สามารถทำงานได้บน AutoCAD เวอร์ชันเต็มเท่านั้น โดยจะไม่ทำงานภายใต้ AutoCAD LT (ไม่รวมกรณีโหลด...

สถานภาพทางสังคมของบุคคลในสังคม

สถานภาพทางสังคมของบุคคลในสังคม

เสนอแนะสิ่งที่กำหนดการเลือกสถานะหลักของบุคคล การใช้ข้อความและข้อเท็จจริงของชีวิตทางสังคม ตั้งสมมติฐานสองข้อ และ...

การตีความข้อผิดพลาดแบบเต็ม

การตีความข้อผิดพลาดแบบเต็ม

มีผู้ใช้จำนวนไม่น้อยที่ต้องเผชิญกับปรากฏการณ์หน้าจอสีน้ำเงินแห่งความตาย จะทำอย่างไร (Windows 7 มักเกิดปัญหานี้บ่อยที่สุด)...

ฟีดรูปภาพ อาร์เอสเอส