Back

การตั้งค่าเครื่องแม่ข่ายระบบการเรียนการสอนออนไลน์สำหรับการสอบ

ในช่วงการจัดสอบใหญ่ เช่น การสอบกลางภาค การสอบปลายภาค จะมีพฤติการการใช้งานที่แตกต่างไปจากช่วงการเรียนการสอนคือ มีการเข้าใช้งานพร้อมกันเป็นจำนวนมาก บางช่วงมีจำนวนผู้ใช้งานออนไลน์พร้อมกันมากถึง 3,000 คน เป็นการใช้งานเพื่อสอบเก็บคะแนนในช่วงเวลาที่กำหนด มีพฤติกรรมการใช้งานลักษณะการทำแบบทดสอบการส่งคำตอบแต่ละข้อในช่วงเวลาสั้นๆ ในหนึ่งพฤติกรรม แตกต่างจากช่วงเวลาการเรียนปกติ ซึ่งในหนึ่งพฤติกรรมอาจใช้เวลาการประมวลผลนานกว่า เช่นการอัพโหลดวีดีโอ รูปภาพเพื่อให้การทำงานของระบบในช่วงสอบทำงานได้อย่างมีประสิทธิภาพ จึงต้องมีการกำหนดค่าเครื่องแม่ข่ายอีกรูปแบบหนึ่งที่แตกต่างจากช่วงการเรียนการสอนปกติ

 

ขั้นตอนการปรับเครื่องแม่ข่ายให้มีสภาวะพร้อมสำหรับการสอบ

1.      เปิดโหมดบำรุงรักษาระบบ (Maintainance mode)

เมื่อถึงเวลาที่กำหนดให้ดำเนินการเปิดโหมดบำรุงรักษาระบบ (maintainance mode)

2.      ใช้คำสั่งยกเลิกเซสชันการใช้งานของผู้ใช้งาน

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

1.       เข้าสู่เครื่องแม่ข่ายด้วยวิธีการ ssh

2.       ไปยังตำแหน่ง cd /app/moodle/lms/admin/cli

3.       รันคำสั่ง php kill_all_sessions.php

ผู้ใช้งานที่อยู่ในระบบจะถูกปฎิเสธการใช้งานต่อ และออกจากระบบ

 

3.      ตั้งค่าเครื่องแม่ข่าย

3.1.   เครื่องแม่ข่าย load balance

จุดที่ต้องดำเนินการตั้งค่าอยู่ที่ /etc/nginx/default.d

3.1.1.แก้ไขการตั้งค่า proxy.conf

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

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

ตารางสรุปการตั้งค่า proxy.conf

ค่าที่ต้องปรับ

ช่วงการเรียนการสอนปกติ

ช่วงการสอบ

proxy_connect_timeout

90

60

proxy_send_timeout

1800

60

proxy_read_timeout

1800

60

3.1.2.       แก้ไขการตั้งค่า http.conf

การตั้งค่าในส่วนนี้คือลดเวลาในการเชื่อมต่อสั้นลงเช่นเดียวกับ proxy เพื่อไม่ให้เกิดการจองทรัพยากรเครื่อง  (hold resourse)

ตารางสรุปการตั้งค่า http.conf

ค่าที่ต้องปรับ

ช่วงการเรียนการสอนปกติ

ช่วงการสอบ

      client_header_timeout

1800

                                     60

   client_body_timeout

1800

                                     60

     send_timeout      

1800

                                     60

keepalive_timeout

90

                                     33

 keepalive_requests

4096

                                   1000

 

3.2.   เครื่องแม่ข่ายส่วนระบบการเรียนการสอน

3.2.1.แก้ไขไฟล์  /ect/php-fpm.d/www.conf    

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

ตารางสรุปการตั้งค่า www.conf

ค่าที่ต้องปรับ

ช่วงการเรียนการสอนปกติ

ช่วงการสอบ

listen.backlog

1023

1023

pm

dynamic

dynamic

pm.max_children

3400

3400

pm.start_servers

500

1200

pm.min_spare_servers

500

1200

pm.max_spare_servers

500

1200

แก้ไขไฟล์ ณ ตำแหน่ง /etc/nginx/default.d

3.2.2.       ไฟล์ http.conf

            client_header_timeout         60;               

            client_body_timeout            60;               # exam 60 learn 1800

             send_timeout                        60;              # exam 60 learn 1800

             keepalive_timeout               33;               # exam 33 learn 90

             keepalive_requests             1000;           # exam 1000 learn 4096

ตารางสรุปการตั้งค่า http.conf

ค่าที่ต้องปรับ

ช่วงการเรียนการสอนปกติ

ช่วงการสอบ

client_header_timeout

60

                   60

client_body_timeout

1800

                   60

send_timeout

1800

                   60

keepalive_timeout

90

                   33

keepalive_requests

4096

                 1000

3.2.3.       ไฟล์ php.conf         

fastcgi_connect_timeout       60;

fastcgi_send_timeout            60; #exam 60 learn 1800

fastcgi_read_timeout             60; #exam 60 learn 1800

 

ตารางสรุปการตั้งค่า php.conf 

ค่าที่ต้องปรับ

ช่วงการเรียนการสอนปกติ

ช่วงการสอบ

fastcgi_connect_timeout

60

60

fastcgi_send_timeout

1800

60

fastcgi_read_timeout

1800

60

3.2.4.       ไฟล์ proxy.conf

proxy_connect_timeout        60;     #exam 60 learn 360

proxy_send_timeout              60;      #exam 60 learn 1800

proxy_read_timeout              60;     #exam 60 learn 1800

ตารางสรุปการตั้งค่า

ค่าที่ต้องปรับ

ช่วงการเรียนการสอนปกติ

ช่วงการสอบ

proxy_connect_timeout

360

60

proxy_send_timeout

1800

60

proxy_read_timeout

1800

60

        

โดยการกำหนดค่าเหล่านี้จะต้องดำเนินการก่อนการสอบและทำการรีสตาร์ทเครื่องแม่ข่ายเนื่องจากเครื่องที่ทำงานเป็นเวลาระยะหนึ่งจำเป็นต้องมีการ restart เพื่อป้องกันการจองทรัพยากร (RAM) ของโปรเซสบางโปรเซสแบบไม่คืน (Memory Leak)

 

ขั้นตอนการรีสตาร์ทเครื่องแม่ข่ายมีลำดับขั้นตอนดังนี้

1.       หยุดการทำงานเครื่องแม่ข่าย LMS

          service nginx stop

          reboot

2.       หยุดการทำงาน mysql service ในเครื่องฐานข้อมูล

          service mysql stop

          reboot

3.       เริ่มการทำงาน mysql service ในเครื่องฐานข้อมูล

          service mysqld start

4.       ตรวจสอบสถานะ service mysql

          service mysqld status

5.       รีสตาร์ทเครื่องแม่ข่าย cache

          service redis stop

          reboot

          service redis start

6.       เริ่มการทำงาน service nginx ในเครื่องแม่ข่าย LMS

          service nginx start

7.       รีสตาร์ท service nginx ในเครื่องแม่ข่าย loadbalance

          service nginx stop

          reboot

          service nginx start

8.       ในระบบ LMS

          ดำเนินการ purge cache

          ในปลั๊กอิน redis management โดยเลือกที่เมนู server > redis management ดำเนินการ flush ทั้งในส่วนของ redis_app และ redis_session

ตรวจสอบความพร้อมใช้งาน

1.       เปิดหน้า notification เพื่อตรวจสอบการแจ้งเตือน

ตรวจสอบการทำงานของ crontab โดยจะต้องไม่มีแจ้งเตือนเกี่ยวกับ crontab

2.       ตรวจสอบ report

2.1.   Performance overview สถาะนะของรายงานจะต้องเป็นสถานะ “OK” หากพบความผิดปกติควรดำเนินการแก้ไข้

                       

2.2.   Security checks ตรวจสอบผลรายงานด้านความปลอดภัยของระบบให้อยู่สถานะ “OK” หากพบความผิดปกติควรดำเนินการแก้ไข้

                 

2.3.   System status report  รายงานสถานะของระบบโดยค่าที่ต้องตรวจสอบประกอบด้วย Environment, Upgrade, Cron running จะต้องอยู่ในสถานะ “OK”

               

 

2.4.   ปิดโหมดบำรุงรักษา (maintainance mode)

 

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