WebSocket Scaling Scaling Strategy วิธี Scale — คู่มือฉบับสมบูรณ์ 2026 | SiamCafe Blog
การขยายระบบ WebSocket คืออะไร และทำไมจึงเรื่องมากในปี 2026
การขยายขนาดระบบเว็บซ็อกเก็ต (WebSocket Scaling) คือการทำให้ระบบส่งข้อมูลแบบเรียลไทม์ของเรา รองรับผู้ใช้จำนวนมากขึ้นโดยไม่พัง หรือหากจะให้พูดง่าย ๆ
ก็คือ ตอนที่เราเริ่มโปรเจกต์ใหม่ สร้างเซิร์ฟเวอร์เว็บซ็อกเก็ตหนึ่งตัวรองรับผู้ใช้สักร้อยคนก็สบาย แต่พอวันหนึ่งผู้ใช้พุ่งเป็นหมื่นเป็นแสน การเชื่อมต่อเริ่มล่ามหาสูญ ข้อความส่งถึงกันไม่ทัน หรือที่แยกกว่านั้นคือเซิร์ฟเวอร์ล่มกลางคัน นั่นแหละคือจุดที่เราต้องมีกลยุทธ์การขยายที่ชัดเจน
ผมเขียนโค้ดและรันระบบที่เกี่ยวข้องกับข้อมูลราคาแบบเรียลไทม์มาสิบสามปี ตั้งแต่ระบบรับสัญญาณราคาทองคำและค่าเงินจากโบรกเกอร์ ไปจนถึงแดชบอร์ดที่ต้องดันข้อมูลหลายพันจุดต่อวินาที ประสบการณ์ที่เจ็บตัวมากที่สุดของผมคือการที่ระบบเว็บซ็อกเก็ตไม่ได้ออกแบบมาเพื่อการขยายตั้งแต่แรก พอต้องแก้ทีหลัง มันไม่ใช่แค่เพิ่มเซิร์ฟเวอร์ แต่ต้องรื้อสถาปัตยกรรมทั้งหมด
ความยากของการขยายเว็บซ็อกเก็ตเมื่อเทียบกับเอชทีทีพีธรรมดาก็คือ การเชื่อมต่อของเว็บซ็อกเก็ตเป็นแบบถาวร ยาวไป ไม่ใช่เปิด ปิด จบ ต่อคำขอเหมือนเอชทีทีพี หมายความว่าแต่ละการเชื่อมต่อจะกินหน่วยความจำและตัวบ่งชี้ไฟล์ของระบบปฏิบัติการตลอดเวลาที่ผู้ใช้อยู่กับเรา ถ้าเซิร์ฟเวอร์หนึ่งรองรับได้ประมาณห้าหมื่นการเชื่อมต่อ พอต้องการห้าแสนการเชื่อมต่อ เราต้องกระจายให้เซิร์ฟเวอร์สิบตัว และปัญหาที่ตามมาคือ ผู้ใช้ที่คุยกันอยู่อาจไปติดคนละเซิร์ฟเวอร์ ข้อความถึงกันไม่ต้อง เรียกว่าปัญหาการกระจายสถานะ ซึ่งเป็นหัวใจของทั้งบทความนี้
ในปี 2026 ที่ผู้ใช้คาดหวังข้อมูลแบบทันที ไม่ว่าจะเป็นราคาหุ้น ราคาคริปโต การแจ้งเตือน หรือแชท การที่ระบบเว็บซ็อกเก็ตของเราขยายได้ดี คือข้อได้เปรียบทางการแข่งขันจริง ๆ ไม่ใช่เรื่องของบริษัทยักษ์ใหญ่เท่านั้น
ถ้าจะสรุปสั้น ๆ ก็คือ เอชทีทีพีแบบปกติเป็นการเชื่อมต่อชั่วคราว มีการร้องขอ มีการตอบกลับ แล้วปิดไป แต่เว็บซ็อกเก็ตเปิดครั้งเดียวแล้วค้างไว้
ข้อมูลไหลกันไปมาได้ตลอดเวลา ความต่างนี้ทำให้ทุกอย่างที่เราคุ้นเคยกับการสร้างเว็บปกติใช้ไม่ได้ผลเหมือนเดิม
ถ้าจะสรุปสั้น ๆ ก็คือ เอชทีทีพีแบบปกติเป็นการเชื่อมต่อชั่วคราว มีการร้องขอ มีการตอบกลับ แล้วปิดไป แต่เว็บซ็อกเก็ตเปิดครั้งเดียวแล้วค้างไว้ ข้อมูลไหลกันไปมาได้ตลอดเวลา ความต่างนี้ทำให้ทุกอย่างที่เราคุ้นเคยกับการสร้างเว็บปกติใช้ไม่ได้ผลเหมือนเดิม
ลองเปรียบเทียบดูง่าย ๆ ดังตารางนี้
| ประเด็น | เอชทีทีพีธรรมดา | เว็บซ็อกเก็ต |
|---|---|---|
| อายุการเชื่อมต่อ | สั้น ปิดทันทีหลังตอบ | ยาว อาจเปิดค้างเป็นชั่วโมงหรือวัน |
| การกระจายโหลด | ง่าย แต่ละคำขอไปตัวไหนก็ได้ | ยาก ต้องรักษาการเชื่อมต่อเดิมไว้ |
| การเก็บสถานะ | ไม่ต้องเก็บ ระบบไร้สถานะ | ต้องจำว่าใครต่ออยู่กับเครื่องไหน |
| การปรับขนาด | เพิ่มเครื่องได้เลย | ต้องมีชั้นส่งต่อข้อความร่วมกัน |
| ผลกระทบเวลาเครื่องล่ม | ผู้ใช้แค่รีเฟรช | การเชื่อมต่อหลุด ต้องรีเชื่อมต่อให้เนียน |
จากตารางจะเห็นว่าปัญหาใหญ่ที่สุดคือการเก็บสถานะ สมมติว่าผู้ใช้สองคนคือสมชายและสมหญิง แชทกันอยู่ สมชายต่ออยู่กับเซิร์ฟเวอร์หมายเลขหนึ่ง สมหญิงต่ออยู่กับหมายเลขสอง พอสมชายส่งข้อความ เซิร์ฟเวอร์หนึ่งไม่รู้จักการเชื่อมต่อของสมหญิงเลย วิธีแก้คือต้องมีระบบแจกจ่ายข้อความกลางที่ทุกเซิร์ฟเวอร์ฟังอยู่ ซึ่งจะพูดถึงต่อในหัวข้อถัดไป
อีกประเด็นที่มือใหม่มักพลาดคือทรัพยากรของระบบปฏิบัติการ แต่ละการเชื่อมต่อที่ค้างอยู่ใช้ตัวบ่งชี้ไฟล์หนึ่งตัว ค่าตั้งต้นของลีนุกซ์หลายเครื่องจำกัดไว้แค่หลักพันต่อโปรเซส ถ้าไม่ไปปรับค่านี้ เครื่องแรงแค่ไหนก็จำกัดอยู่แค่นั้น อีกอย่างคือหน่วยความจำ การเชื่อมต่อแต่ละอันกินหน่วยความจำไม่เท่ากันขึ้นกับภาษาและไลบรารีที่ใช้ ภาษาที่จัดการหน่วยความจำอัตโนมัติแบบบางตัวอาจกินหลายกิโลไบต์ต่อการเชื่อมต่อหนึ่งอัน พอมีเป็นแสนอัน ตัวเลขมันโตได้เร็วมาก
กลยุทธ์แบบแนวตั้ง คือการเอาเครื่องที่แรงขึ้นมาแทนที่เครื่องเดิม เครื่องที่เคยมีหน่วยประมวลผลสี่แกนก็เปลี่ยนเป็นสามสิบสองแกน
หน่วยความจำจากแปดกิกะไบต์เป็นหนึ่งร้อยยี่สิบแปดกิกะไบต์ วิธีนี้ง่ายที่สุด ไม่ต้องแก้โค้ดอะไรเลย เพราะทุกการเชื่อมต่อยังอยู่กับเครื่องเดียวกัน ข้อความถึงกันหมด
กลยุทธ์แบบแนวราบ และแบบแนวตั้ง เลือกอย่างไรให้เหมาะกับงาน
กลยุทธ์แบบแนวตั้ง คือการเอาเครื่องที่แรงขึ้นมาแทนที่เครื่องเดิม เครื่องที่เคยมีหน่วยประมวลผลสี่แกนก็เปลี่ยนเป็นสามสิบสองแกน หน่วยความจำจากแปดกิกะไบต์เป็นหนึ่งร้อยยี่สิบแปดกิกะไบต์ วิธีนี้ง่ายที่สุด ไม่ต้องแก้โค้ดอะไรเลย เพราะทุกการเชื่อมต่อยังอยู่กับเครื่องเดียวกัน ข้อความถึงกันหมด
ส่วนกลยุทธ์แบบแนวราบ คือการเพิ่มจำนวนเครื่อง แล้วใช้ตัวกระจายโหลดแบกการเชื่อมต่อไปแบ่งกัน วิธีนี้ต้องออกแบบเพิ่มแน่นอน แต่ขยายได้แทบไม่จำกัด
จากประสบการณ์จริง ผมแนะนำลำดับการคิดแบบนี้ หนึ่ง ปรับจูนเครื่องเดียวให้สุดก่อน เพราะบางทีปัญหาแค่ค่าจำกัดตัวบ่งชี้ไฟล์หรือค่าของเว็บเซิร์ฟเวอร์ที่ตั้งต่ำเกินไป สอง เมื่อเครื่องเดียวปรับจนสุดแล้วจริง ๆ ค่อยขยายแบบแนวราบ สาม อย่าลืมว่าแบบแนวตั้งมีขีดจำกัดสูงสุดที่ฮาร์ดแวร์จะขายให้เรา และเครื่องเดียวคือจุดล้มเหลวจุดเดียว ถ้าเครื่องพัง ระบบหายทั้งระบบ
ถ้าบทความนี้ให้จำได้แค่หนึ่งอย่าง ผมขอให้จำหัวข้อนี้ เมื่อมีเซิร์ฟเวอร์เว็บซ็อกเก็ตมากกว่าหนึ่งตัว คุณต้องมีระบบส่งต่อข้อความกลาง เช่น
เรดิสที่มีโหมดเผยแพร่และรับฟัง หรือโซลูชันที่แข็งแรงกว่าอย่างแรบบิตเอ็มคิว หรือคาฟคา หลักการคือ เซิร์ฟเวอร์ทุกตัวสมัครรับข้อมูลจากช่องกลาง เมื่อเซิร์ฟเวอร์หนึ่งมีข้อความที่ต้องส่งให้ผู้ใช้ที่อยู่บนเซิร์ฟเวอร์อื่น มันปล่อยข้อความลงช่องกลาง เซิร์ฟเวอร์ที่ถือการเชื่อมต่อของผู้รับเป้าหมายจะหยิบไปส่งให้เอง
อีกเทคนิคที่ใช้ได้ผลดีก่อนจะถึงขั้นต้องเพิ่มเครื่อง คือการแยกตามประเภทงาน เรียกว่าการแบ่งตามช่องทาง เช่น เครื่องหนึ่งดูแลเฉพาะการเชื่อมต่อที่รับข้อมูลราคาซึ่งถี่แต่เบา อีกเครื่องดูแลการแชทซึ่งเบาแต่สำคัญกับผู้ใช้ การแบ่งแบบนี้ช่วยให้ปรับขนาดแต่ละส่วนได้อิสระ และปัญหาในส่วนหนึ่งไม่ลามไปทำร้ายอีกส่วนหนึ่ง
การใช้ชั้นส่งต่อข้อความกลาง หัวใจของการขยายแบบหลายเซิร์ฟเวอร์
ถ้าบทความนี้ให้จำได้แค่หนึ่งอย่าง ผมขอให้จำหัวข้อนี้ เมื่อมีเซิร์ฟเวอร์เว็บซ็อกเก็ตมากกว่าหนึ่งตัว คุณต้องมีระบบส่งต่อข้อความกลาง เช่น เรดิสที่มีโหมดเผยแพร่และรับฟัง หรือโซลูชันที่แข็งแรงกว่าอย่างแรบบิตเอ็มคิว หรือคาฟคา หลักการคือ เซิร์ฟเวอร์ทุกตัวสมัครรับข้อมูลจากช่องกลาง เมื่อเซิร์ฟเวอร์หนึ่งมีข้อความที่ต้องส่งให้ผู้ใช้ที่อยู่บนเซิร์ฟเวอร์อื่น มันปล่อยข้อความลงช่องกลาง เซิร์ฟเวอร์ที่ถือการเชื่อมต่อของผู้รับเป้าหมายจะหยิบไปส่งให้เอง
ลองดูตัวอย่างโค้ดแนวคิดแบบสั้น ๆ เมื่อใช้เรดิสเป็นชั้นกลาง
// ตอนรับข้อความจากผู้ใช้ socket.on('message', async (msg) => { // ไม่ส่งตรง แต่ปล่อยลงช่องกลาง await redis.publish('chat:room1', JSON.stringify(msg)); });
// ตอนฟังช่องกลาง ทุกเซิร์ฟเวอร์ทำแบบนี้ redisSub.subscribe('chat:room1', (channel, data) => { const local = rooms.get('room1'); if (local) local.forEach(s => s.send(data)); });
เมื่อมีหลายเซิร์ฟเวอร์ คำถามต่อมาคือผู้ใช้แต่ละคนควรไปต่อที่เครื่องไหน วิธีพื้นฐานคือให้ตัวกระจายโหลดทำแบบหมุนเวียน
แต่มันมีข้อเสียคือไม่คำนึงถึงโหลดจริงของแต่ละเครื่อง เครื่องที่ถือการเชื่อมต่อหนัก ๆ อยู่แล้วอาจโดนเพิ่มจนอืด
ตอนเลือกเครื่องมือ ผมใช้เกณฑ์ง่าย ๆ เรดิสโหมดเผยแพร่รับฟังเหมาะกับงานที่ข้อความหายไปบ้างไม่เป็นไร เช่น การดันราคาที่มีข้อมูลใหม่ไหลมาตลอด ถ้าหลุดตัวหนึ่ง ตัวถัดไปมาแทนที่อยู่แล้ว แต่ถ้าข้อความห้ามหายเด็ดขาด เช่น คำสั่งซื้อขาย ต้องใช้คาฟคาซึ่งเก็บข้อความไว้ในดิสก์และยืนยันการรับได้ เริ่มงานจริงจังทีหลังผมย้ายระบบดันราคาไปใช้คาฟคา เพราะนอกจากไม่ทำข้อความหายแล้ว ยังให้เราย้อนดูข้อมูลย้อนหลังตอนไล่ปัญหาได้ด้วย ประหยัดเวลาไล่บั๊กไปหลายชั่วโมงต่อครั้ง
อย่าลืมเรื่องการปรับขนาดของชั้นกลางเองด้วย ชั้นกลางที่ตายคือระบบทั้งระบบตาย จึงต้องตั้งค่าให้มีตัวสำรองและมีการทดสอบสถานการณ์ล่มจริงเป็นระยะ
เทคนิคจับคู่ผู้ใช้กับเซิร์ฟเวอร์ และการรีเชื่อมต่อที่ไม่ทำให้ผู้ใช้รำคาญ
เมื่อมีหลายเซิร์ฟเวอร์ คำถามต่อมาคือผู้ใช้แต่ละคนควรไปต่อที่เครื่องไหน วิธีพื้นฐานคือให้ตัวกระจายโหลดทำแบบหมุนเวียน แต่มันมีข้อเสียคือไม่คำนึงถึงโหลดจริงของแต่ละเครื่อง เครื่องที่ถือการเชื่อมต่อหนัก ๆ อยู่แล้วอาจโดนเพิ่มจนอืด
วิธีที่ดีกว่าคือเลือกแบบมีความเข้าใจโหลด ให้เซิร์ฟเวอร์รายงานจำนวนการเชื่อมต่อและการใช้ทรัพยากรของตัวเองขึ้นทะเบียนกลางอยู่เสมอ ตัวกระจายโหลดเลือกเครื่องที่ว่างที่สุด วิธีนี้ให้ผลลัพธ์สม่ำเสมอกว่ามาก
อีกเรื่องที่สำคัญมากคือการที่เซิร์ฟเวอร์ล่มหรือถูกปิดปรับปรุง ผู้ใช้จะโดนหลุดการเชื่อมต่อ ถ้ารีเชื่อมต่อไม่ดี ผู้ใช้จะเห็นว่าข้อมูลค้างหรือกระตุก สิ่งที่เราต้องทำคือ หนึ่ง ไลบรารีฝั่งผู้ใช้ต้องรีเชื่อมต่อเองโดยอัตโนมัติแบบถอยหลังทีละนิด คือครั้งแรกรอหนึ่งวินาที ครั้งต่อไปรอสองวินาที สี่วินาที ไล่ขึ้นไปเรื่อย ๆ จนกลับมาเป็นปกติ สอง เมื่อรีเชื่อมต่อสำเร็จ ต้องบอกเซิร์ฟเวอร์ว่าข้อมูลล่าสุดที่เราได้รับคือตอนไหน เพื่อให้เซิร์ฟเวอร์ดันข้อมูลช่วงที่หายไปให้ ไม่ใช่ให้ข้อมูลใหม่ตั้งแต่ตอนนี้ไปเฉย ๆ แล้วทิ้งช่องว่าง
เทคนิคที่ผมใช้คือให้แต่ละข้อความมีหมายเลขลำดับเรียงกัน ฝั่งผู้ใช้เก็บหมายเลขล่าสุดไว้ พอรีเชื่อมต่อก็ส่งหมายเลขนั้นบอกเซิร์ฟเวอร์ เซิร์ฟเวอร์ที่ต่อกับชั้นเก็บประวัติข้อความก็ดึงช่วงที่ขาดมาส่งให้ก่อนแล้วค่อยเริ่มดันข้อมูลปัจจุบัน ผู้ใช้จะแทบไม่รู้สึกว่ามีการหลุดเกิดขึ้นเลย
สุดท้าย เรื่องการปิดเซิร์ฟเวอร์อย่างนุ่มนวล ก่อนจะถอดเครื่องหนึ่งออกจากระบบเพื่ออัปเดต ต้องปิดการรับการเชื่อมต่อใหม่ก่อน แล้วบอกผู้ใช้ที่ต่ออยู่ให้ย้ายไปเครื่องอื่นด้วยข้อความควบคุมพิเศษ รอให้ย้ายจนเกือบหมดแล้วค่อยปิดจริง วิธีนี้ทำให้อัปเดตระบบได้โดยไม่มีผู้ใช้สังเกตเห็น ซึ่งเป็นมาตรฐานที่ระบบระดับใช้งานจริงต้องมี
แผนปฏิบัติจริง และการวัดผลว่าระบบขยายได้จริงหรือไม่
ทฤษฎีพูดมาเยอะแล้ว มาดูแผนที่ลงมือทำได้จริงทีละขั้น ขั้นแรก วัดก่อนว่าเครื่องเดียวรองรับได้เท่าไร อย่าเดา ให้ทำการทดสอบด้วยเครื่องมือจำลองผู้ใช้หลายพันการเชื่อมต่อพร้อมกัน แล้วดูว่าหน่วยความจำ หน่วยประมวลผล และเวลาตอบสนองเปลี่ยนแปลงอย่างไร ผมเคยคิดว่าเครื่องของผมรองรับได้ห้าหมื่นการเชื่อมต่อ พอทดสอบจริงปรากฏว่าสามหมื่นห้าพันก็เริ่มอืดแล้ว เพราะขนาดของข้อความที่ส่งในการทดสอบผมประมาณต่ำไป
ขั้นที่สอง ปรับค่าพื้นฐานของระบบปฏิบัติการและไลบรารี ตัวเลขที่ต้องเช็กคือขีดจำกัดตัวบ่งชี้ไฟล์ ขนาดคิวรับของพอร์ตเครือข่าย และค่าหมดเวลาของการเชื่อมต่อที่ตัวกระจายโหลด ค่าหมดเวลาตรงนี้สำคัญมาก ถ้าตั้งสั้นเกินไป ตัวกระจายโหลดจะตัดการเชื่อมต่อเว็บซ็อกเก็ตที่ยังไม่มีข้อมูลไหลผ่านทิ้ง ผู้ใช้จะหลุดวนไปเรื่อย ๆ โดยไม่มีสาเหตุชัดเจน ปัญหานี้ผมเจอมาแล้วและใช้เวลาหลายวันกว่าจะเจอ
ขั้นที่สาม วางระบบตรวจวัด อย่างน้อยต้องมีตัวเลขเหล่านี้แสดงบนแดชบอร์ด จำนวนการเชื่อมต่อปัจจุบันต่อเครื่อง จำนวนข้อความส่งต่อวินาที เวลาตอบสนองเฉลี่ยและค่าที่แย่ที่สุด อัตราการรีเชื่อมต่อของผู้ใช้ และความล่าช้าจากต้นทางข้อมูลถึงมือผู้ใช้ ตัวสุดท้ายนี่สำคัญมากสำหรับงานราคา เพราะถ้าความล่าช้าพุ่งขึ้นแปลว่ามีคอขวดที่ไหนสักแห่งทันที
ขั้นที่สี่ ทดสอบสถานการณ์ล่มเป็นประจำ ปิดเซิร์ฟเวอร์หนึ่งตัวดูว่าระบบรับมือได้ไหม ปิดชั้นส่งต่อข้อความกลางดูว่าเ
คำถามที่พบบ่อย
ทำไมการขยายระบบ WebSocket จึงยากกว่าการขยายเว็บที่ใช้ HTTP ปกติ?
ความต่างสำคัญอยู่ที่ลักษณะการเชื่อมต่อ HTTP แบบปกติเป็นการเชื่อมต่อชั่วคราว มีการร้องขอ ตอบกลับ แล้วปิดทันที ทำให้ระบบเป็นแบบไร้สถานะ แต่ละคำขอไปตกที่เซิร์ฟเวอร์ตัวไหนก็ได้โดยไม่มีปัญหา ส่วน WebSocket เปิดการเชื่อมต่อครั้งเดียวแล้วค้างไว้เป็นเวลานาน อาจเป็นชั่วโมงหรือหลายวัน ทำให้ต้องจำว่าผู้ใช้แต่ละคนต่ออยู่กับเซิร์ฟเวอร์เครื่องไหน เกิดปัญหาการกระจายสถานะ เช่น ผู้ใช้สองคนที่แชทกันอยู่อาจต่ออยู่คนละเซิร์ฟเวอร์ ทำให้ข้อความส่งถึงกันไม่ได้ ต้องมีระบบแจกจ่ายข้อความกลาง นอกจากนี้แต่ละการเชื่อมต่อยังกินหน่วยความจำและตัวบ่งชี้ไฟล์ของระบบปฏิบัติการตลอดเวลา ต่างจาก HTTP ที่ปล่อยทรัพยากรทันทีหลังตอบกลับ
ปัญหาการกระจายสถานะ (State Distribution) คืออะไร และแก้อย่างไร?
ปัญหาการกระจายสถานะเกิดขึ้นเมื่อเรามีเซิร์ฟเวอร์ WebSocket หลายตัวและผู้ใช้ที่ต้องสื่อสารกันต่ออยู่กับเซิร์ฟเวอร์คนละเครื่อง ตัวอย่างเช่น สมชายต่ออยู่กับเซิร์ฟเวอร์หมายเลขหนึ่ง สมหญิงต่ออยู่กับหมายเลขสอง เมื่อสมชายส่งข้อความ เซิร์ฟเวอร์หนึ่งไม่รู้จักการเชื่อมต่อของสมหญิงเลย ข้อความจึงไปไม่ถึงปลายทาง วิธีแก้คือต้องมีระบบแจกจ่ายข้อความกลางที่ทุกเซิร์ฟเวอร์ฟังอยู่ร่วมกัน หรือที่เรียกว่าชั้นส่งต่อข้อความร่วม เมื่อเซิร์ฟเวอร์ตัวใดได้รับข้อความ ก็จะเช็กว่ามีผู้รับเป้าหมายต่ออยู่กับตัวเองหรือไม่ ถ้ามีก็ส่งต่อให้ นี่คือหัวใจสำคัญของการออกแบบสถาปัตยกรรม WebSocket ที่รองรับการขยายตั้งแต่ต้น
ควรเลือกการขยายแบบแนวตั้งหรือแนวราบสำหรับระบบ WebSocket?
การขยายแบบแนวตั้งคือการเปลี่ยนไปใช้เครื่องที่แรงขึ้น เช่น จาก CPU สี่แกนเป็น 32 แกน หรือ RAM จาก 8GB เป็น 128GB ข้อดีคือง่ายที่สุดและไม่ต้องแก้โค้ดเลย เพราะทุกการเชื่อมต่อยังอยู่บนเครื่องเดียวกัน ข้อความถึงกันหมดโดยอัตโนมัติ ส่วนการขยายแบบแนวราบคือการเพิ่มจำนวนเครื่องและใช้ตัวกระจายโหลดแบ่งการเชื่อมต่อ ต้องออกแบบเพิ่มแน่นอนแต่ขยายได้แทบไม่จำกัด จากประสบการณ์จริง แนะนำลำดับการคิดดังนี้ หนึ่ง ปรับจูนเครื่องเดียวให้สุดก่อน เพราะบางทีปัญหาอาจแค่ค่าจำกัดตัวบ่งชี้ไฟล์หรือค่าเว็บเซิร์ฟเวอร์ที่ตั้งต่ำเกินไป สอง เมื่อเครื่องเดียวเต็มศักยภาพแล้วจึงค่อยพิจารณาขยายแบบแนวราบ
มีค่าปรับแต่งระบบปฏิบัติการอะไรบ้างที่มือใหม่มักพลาดเวลาขยาย WebSocket?
ประเด็นแรกคือตัวบ่งชี้ไฟล์ แต่ละการเชื่อมต่อ WebSocket ที่ค้างอยู่ใช้ตัวบ่งชี้ไฟล์หนึ่งตัว ซึ่งค่าตั้งต้นของลีนุกซ์หลายเครื่องจำกัดไว้แค่หลักพันต่อโปรเซส ถ้าไม่ไปปรับค่านี้ เครื่องแรงแค่ไหนก็จำกัดอยู่แค่นั้น ประเด็นที่สองคือหน่วยความจำ การเชื่อมต่อแต่ละอันกินหน่วยความจำไม่เท่าก
แนะนำเพิ่มเติม
🎯 เปิดบัญชี XM Forex → สมัคร
📱 แอป iCafeFX → ดาวน์โหลด
📊 สัญญาณฟรี → รับสัญญาณ
📚 คู่มือเทรด → SiamCafeBook
🤝 สมัคร Partner XM → pipaffiliates.com/c?c=72816&l=th&p=6
แนะนำจากเครือข่าย SiamCafe
คู่มือ Forex ที่เกี่ยวข้อง
แหล่งอ้างอิง
- SiamCafe.net - ชุมชนไอทีไทยตั้งแต่ปี 1997
- iCafeFX.com - ศูนย์วิเคราะห์ Forex และทองคำ