jelastic memcached

ทำความรู้จัก Memcached และปรับจูนประสิทธิภาพเว็บด้วย PHP sessions clustering in the Cloud

ปัจจุบัน Web stack เริ่มมีการนำ Memcached มาใช้ในการเพิ่มประสิทธิภาพของเว็บแอปพลิเคชัน เช่น การทำแคช PHP sessions cluster เป็นต้น

Memcached เป็นระบบแคชอ็อบเจ็กต์บนหน่วยความจำแบบกระจาย (Distributed memory object caching system) ที่ฟรี และมีประสิทธิภาพสูง ติดตั้งบนเซิร์ฟเวอร์เพื่อใช้เร่งความเร็วให้เว็บแอปพลิเคชันแบบไดนามิก โดยลดภาระของการเข้าถึง database อีกทั้ง Memcached ยังช่วยให้คุณใช้ประโยชน์จากหน่วยความจำได้ดีขึ้น 

รูปแบบการทำงานของ Memcached คือ

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

ดังนั้นในกรณีที่เว็บแอปพลิเคชั้น master node ตายลง (Original เซิร์ฟเวอร์) ก็ยังมีเซสชันที่พร้อมใช้งานบนเว็บแอปพลิเคชัน (AppServer โหนดอื่น ๆ) และสามารถใช้เพื่อตอบสนอง request ถัดไปได้ และหลังจากการ request ในครั้งที่สองเสร็จสิ้น เซสชันจะถูกอัปเดตใน Memcached

Memcached แบ่งการทำงานได้เป็น 2 สถานการณ์คือ

1. Memcached บน Web stack แบบ Stantaload 

คือติดตั้ง Memcached บน AppServer ที่ทำงานแยกจากกันเป็นอิสระอย่างสมบูรณ์

2. Web stack แบบมี Memcached

คือติดตั้ง Memcached แบบกระจายโหนดโดยแต่ละโหนดสามารถใช้หน่วยความจำจากโหนดอื่น ๆ ได้ข้อดีของการใช้ Stack ในลักษณะนี้คือ ทำให้การโหลดเว็บได้เร็วเพราะเรียกอ็อปเจ็กต์จากแคชโดยไม่ต้องไปเสียเวลาคิวรีจาก database  

images credit: jelastic memcached

รีดประสิทธิภาพ e-commerce web (WooCommerce) ด้วยวิธีทำ PHP sessions clustering

images credit: Memcached node and NGINX load balancer

How to Configure (Jelastic PaaS)

images credit: Memcached Object Cache for WordPress

ที่หน้าแดชบอร์ด Environment AppServer คลิ๊กไอคอน Config

ให้แก้ไขไฟล์ etc > php.ini

ค้นหาในส่วนของ Dynamic Extensions:

เพิ่มบรรทัด
extension=memcached.so
จากนั้นไปลิงค์โหนด Memcached เข้ากับ AppServer คลิ๊กไปที่ไอคน Links -> Add -> Node (Cache) alias = cache ถัดมาที่ไฟล์ php.ini ในส่วนของ [Session] เพิ่มดังนี้

session.save_handler = memcached
session.save_path = "< server >:11211"

Note: < server> ใส่เป็น memcached IP หรือ Env URL
แต่หากเรา Links แล้วก็ระบุเป็นชื่อ alias ได้เลย จะได้

[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
; session.save_handler = files
session.save_handler = memcached
session.save_path = "cache:11211"

สำหรับวิธีการตรวจสอบก็ใช้ telnet ได้เลย

telnet <memcached> 11211
Connected to <node memcached>.
Escape character is '^]'.

Note: หากใช้ LSCache Plugin บน WordPress ก็กำหนดค่า Object Cache Settings ได้เลย

เสร็จแล้วก็ให้บันทึกและ restart โหนด AppServer เป็นอันสำเร็จครับ ^^ ผู้ที่ สนใจเกี่ยวกับ Cloud Web Hosting และเรียนรู้เพิ่มเติมเกี่ยวกับ Redis และ Memcached มันดียังไง?

Scroll to top