การตั้งค่าเซิร์ฟเวอร์วีโอไอพีที่ดีที่สุดคืออะไร


120

ขณะนี้เรากำลังทำงานกับข้อกำหนดที่คำตอบแรกจากเว็บเซิร์ฟเวอร์จะต้องอยู่ในระยะไม่เกิน 200 มิลลิวินาทีในสหราชอาณาจักร ขณะนี้มีเว็บเซิร์ฟเวอร์เฉพาะ 2 เครื่องภายใต้ load balancer และเซิร์ฟเวอร์ 1 db เรามาที่ 800ms

ไซต์ในขณะนี้มีลูกค้าน้อยกว่า 5 ราย 2 ผลิตภัณฑ์ 4 หมวดไม่มีส่วนหน้าของไซต์ในขณะนี้เป็นรูปแบบฟรีและรูปภาพฟรี

มันยังถูกเรียกใช้บน nginx กับ Varnish

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


2
หากไซต์นั้นมาจากแคชวานิชจะต้องอยู่ใน <100ms
Fabian Blechschmidt

คุณกำลังพยายามทำอะไรอยู่ มีผู้เข้าชมที่ไม่ซ้ำกันกี่คนต่อชั่วโมง มีกี่หน้า / ผู้เยี่ยมชม กี่คำสั่งต่อชั่วโมง? เซิร์ฟเวอร์มีข้อกำหนดอะไรบ้าง? รุ่นวีโอไอพี
Ben Lessani - Sonassi

คุณจัดการการจำลองแบบระหว่างเซิร์ฟเวอร์อย่างไร คุณมีการเชื่อมต่อเครือข่ายใดระหว่างเครื่อง คุณใช้ PHP เวอร์ชันอะไร คุณใช้ MySQL เวอร์ชันอะไร คุณใช้ระบบปฏิบัติการเซิร์ฟเวอร์ใด
Ben Lessani - Sonassi

เคยเห็นเว็บไซต์ที่มีอันดับสูงกว่าหน้าแรก ttfb Google alonside Amazon, eBay และอื่น ๆ เพียงหนึ่งในปัจจัยทางเทคนิคมากมาย - ไม่คำนึงถึงปัจจัยทางธุรกิจมากมาย คุณกำลังเข้าใกล้จากล่างขึ้นบนปรับสำหรับ smes แต่เพื่อจัดอันดับกับไซต์ยอดนิยมที่ทำงานแตกต่างกัน คุณต้องการให้คุณโหลดหน้าเว็บแบบไดนามิก 1-2 วินาทีเรามีไซต์ที่มี 10,000 ผลิตภัณฑ์บนฮาร์ดแวร์ขนาดเล็ก 5-10x และไม่มี fpc (เนื้อหาแบบไดนามิก) ที่ลดลง ttfb และการทำไซต์ให้เสร็จสมบูรณ์โดยเฉลี่ย <1s ในผู้ให้บริการระดับ 1/2 ด้วย - อันดับที่ดีกว่า แต่ช้ากว่าผู้ให้บริการระดับ 3/4 และ 5/6 - fpc ซ่อนปัญหาดังนั้นจึงควรลบออกตอนนี้

คำตอบ:


145

ฉันจะกัด

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

คุณจะไม่บรรลุตัวเลขเหล่านั้นหากไม่ได้รับความช่วยเหลือจากวานิชหรือ FPC (หรือทั้งสองอย่าง) ฉันหวังว่ารูปนั้นไม่จำเป็นต้องรวมเนื้อหาแบบสแตติก (เมื่อใดก็ตามที่คุณตัดสินใจที่จะเพิ่ม) - เนื่องจากเป็นไปไม่ได้ที่จะบรรลุผล (ใกล้จะมีภาพ / js / css น้อยมาก)

เรากำลังเข้ามาที่ 800ms
และมันก็ถูกเรียกใช้บนNginxกับ Varnish

คุณได้วานิชกำหนดค่าผิด

การติดตั้ง Varnish ที่กำหนดค่าไว้อย่างถูกต้องจะส่งมอบเวลาโหลดหน้ากระดาษ <100ms (เราเห็นใกล้กับ <10ms)

อันที่จริงแล้วสำหรับวีโอไอพีคุณควรคาดหวังที่จะเห็นอะไรแบบนี้

เมื่อลูกค้าไม่ได้ลงชื่อเข้าใช้ ...
คือ ไม่มีการสร้างเซสชันที่ไม่ซ้ำกัน (เพิ่มในรถเข็น / สิ่งที่อยากได้เข้าสู่ระบบ ฯลฯ )

--1.2s--------0.8s-----------------0.6s----------------0.1s--------------0.08s----
  Uncached    Mage default cache   Partial FPC cache   Total FPC cache   Varnish

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

--1.4s--------0.8s-----------------0.6s--------------
  Uncached    Mage default cache   Total FPC cache   

ไม่ได้เป็นกรณีของการปรับแต่งวานิช - กรณีของ - "คุณไม่ได้จริงแคชอะไรเลย"


ไฟล์กำหนดค่าเซิร์ฟเวอร์ Magento ในอุดมคติ

มีไม่หนึ่งดีไม่มาก

เราดำเนินงานเซิร์ฟเวอร์มากกว่า 400 แห่งร้าน Magento ล้วนแล้วแต่มีขนาดและความจุแตกต่างกัน และหายากที่ไฟล์การกำหนดค่าที่เรามีอยู่ - จะตรงกับไฟล์อื่น นั่นเป็นเพราะไม่ใช่ทุกธุรกิจที่เหมือนกัน

คอขวดสามารถเกิดขึ้นได้จากหลายสาเหตุด้วยกัน:

  1. มีผู้เข้าชมพร้อมกันจำนวนมากพร้อมเซสชันที่ใช้งานอยู่
  2. ผู้ที่ตกเป็นเหยื่อของบ็อตการรวบรวมข้อมูลที่ 'ไม่ดี' สร้างภาระที่จำเป็นและไม่สามารถประเมินค่าได้
  3. สัดส่วนที่สูงของความนิยมในการนำทางแบบเลเยอร์
  4. จำนวนคำค้นหาจำนวนมาก
  5. ปริมาณธุรกรรมสูงต่อชั่วโมง
  6. เทมเพลตที่สร้างไม่ดี
  7. ส่วนขยายของบุคคลที่สามมากเกินไป / ช้า / ใหญ่
  8. ลิงก์ขาเข้าที่ล้าสมัยนำไปสู่สัดส่วนสูงถึง 404 ครั้ง
  9. ความจุเครือข่ายอินเตอร์เฟสที่ขีด จำกัด
  10. แคตตาล็อกขนาดใหญ่ / ซับซ้อน (ผลิตภัณฑ์ / หมวดหมู่ / แอตทริบิวต์จำนวนมาก)

ดังนั้นด้วยร้านค้าทั่วทั้งสเปกตรัมนี้แต่ละแห่งจึงมีวิธีที่แตกต่างกันในการเพิ่มประสิทธิภาพสูงสุด

เพื่อแก้ไขปัญหาที่กล่าวถึงข้างต้น เราจะจงใจหลีกเลี่ยงเพียงระบุ "ฮาร์ดแวร์เพิ่มเติม / ดีกว่า"

  1. ใช้ FPC นอกเหนือจากวานิช
  2. กรอง / ปิดกั้นบ็อตที่ไม่ดีที่ขอบเครือข่าย - หรือเปลี่ยนเส้นทางคำขอทั้งหมดไปที่วานิชโดยไม่คำนึงถึงสถานะ / URL ของคุกกี้
  3. เปลี่ยนการนำทางแบบชั้นหุ้นเป็น SOLR ทำให้ตัวกรองการนำทางแบบชั้นขึ้นอยู่กับ
  4. เปลี่ยนการค้นหาหุ้นเป็น SOLR
  5. แจกจ่าย MySQL โหลดผ่านการกำหนดค่า Master / Slave - ทำสิ่งนี้เฉพาะเมื่อคุณรับประกันว่าภาระการสืบค้นจะถูกดูดซับโดย Varnish / FPC
  6. สร้างแม่แบบอีกครั้ง
  7. ตัดพวกเขาออก
  8. ตรวจสอบล็อกการเข้าถึงอย่างต่อเนื่องและเขียน URL ใหม่ที่ Nginx / Varnish ก่อนส่งมอบ หากทำที่ระดับ Nginx - ตรวจสอบให้แน่ใจว่า Varnish กำลังแคชการเปลี่ยนเส้นทาง 301/302
  9. แยกเนื้อหาสแตติกออกเป็น CDN หรือปรับปรุงการเชื่อมต่อ
  10. เพิ่มฮาร์ดแวร์เพิ่มเติม (เราต้องพูดในบางจุด)

ดังนั้นเมื่อคำนึงถึงสิ่งนี้ - คุณจะเห็นว่าคงไม่มีไฟล์ config Nginx, ไฟล์ PHP fcgi pool config, ไฟล์ MySQL config หรือไฟล์ Varnish config ที่จะเหมือนกัน จับคู่กับการเปลี่ยนแปลงของฮาร์ดแวร์; หน่วยความจำที่มีอยู่, ประสิทธิภาพ I / O (HDD และเครือข่าย) และ CPU - และคุณจะพบว่ามีรูปแบบที่หลากหลายที่นำไปสู่ประสิทธิภาพที่เพิ่มขึ้นถึง 400% ตามที่คุณต้องการ - แต่ไม่มีคำตอบอย่างรวดเร็ว

คุณสามารถคัดลอก + วางกระดาษขาวคุณภาพเยี่ยมของ Peer 1 ที่สนับสนุนโดย Peerance (เราไม่แนะนำ); หวังว่าการตั้งค่าจะไม่เกินหน่วยความจำที่มีอยู่ขีด จำกัด เธรดสถานะ TCP / IP ความจุ I / O และนำไปสู่ประสิทธิภาพที่น้อยกว่าการกำหนดค่าวานิลลา Apache / mod_php

ดังนั้นให้ดำเนินการต่อไป

เซิร์ฟเวอร์วีโอไอพีที่สมบูรณ์แบบ

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

MageStack - ระบบปฏิบัติการ Magento

นำส่วนประกอบย่อยแยกจากกันและคุณจะได้รายการซอฟต์แวร์ที่ดีที่สุด / สำคัญที่สุดเมื่อกำหนดค่าอย่างเหมาะสมเพื่อเรียกใช้ Magento store สะดุดตา:

ไฟร์วอลล์, ตัวกรอง DOS, ตัวโหลดบาลานซ์, วานิช, Nginx, PHP, Redis, Memcached, MySQL

ดังนั้นเมื่อคุณถาม:

การตั้งค่าเซิร์ฟเวอร์วีโอไอพีที่ดีที่สุดคืออะไร

เป้าหมายของคุณคืออะไร

  1. พร้อมใช้งานสูง
  2. ความเชื่อถือได้
  3. ความเรียบง่ายของการบริหาร
  4. ประสิทธิภาพ
  5. scalability

พอบรรยายเราจะทำอย่างไร

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

ส่วนประกอบย่อยที่จำเป็นสำหรับการกำหนดค่าหลายเซิร์ฟเวอร์คือ:

  • ไฟร์วอลล์
  • โหลดบาลานเซอร์
  • เว็บเซิร์ฟเวอร์
  • เซิร์ฟเวอร์ MySQL
  • ที่เก็บข้อมูลทั่วไป

ดังนั้นเราจะใช้ระบบบางอย่างได้อเนกประสงค์ ความสอดคล้องกับ PCI-DSS กำหนดบทบาทสำหรับเซิร์ฟเวอร์แต่ละเครื่อง ดังนั้นด้วย 5 บทบาทและ 3 เซิร์ฟเวอร์ - คุณจะฝ่าฝืนทันที MageStackได้รับรอบนี้โดยใช้ virtualisation - คุณสามารถทำเช่นเดียวกัน

เซิร์ฟเวอร์ 1: โหลดบาลานเซอร์ + เว็บเซิร์ฟเวอร์
เซิร์ฟเวอร์ 2: เว็บเซิร์ฟเวอร์
เซิร์ฟเวอร์ 3: เซิร์ฟเวอร์ฐานข้อมูล

โดยไม่ต้อง latency ต่ำและแบนด์วิธเครือข่ายอย่างมีนัยสำคัญ (> 1Gbps <125μs) มากกว่าที่มีการจัดเก็บข้อมูลร่วมกัน - ที่ดีกว่าสำหรับคุณที่จะเพียงเก็บไดเรกทอรีรากร้านค้าในแต่ละเครื่องและทำซ้ำข้อมูลทั้งในแบบ real-time โดยใช้ionotifyหรือหมดอายุการใช้cronงาน อีกครั้งเราจะหลีกเลี่ยงระบบไฟล์เครือข่ายเช่น NFS หรืออุปกรณ์บล็อกแบบจำลองเช่น Gluster หรือ DRBD เนื่องจากต้องมีการปรับแต่งและแบนด์วิดธ์เครือข่ายที่เหมาะสม

วานิชจำเป็นต้องนั่งให้ชิดกับด้านหน้ามากที่สุด แต่วานิชไม่สามารถถอดรหัส SSL ได้ ดังนั้นควรรวมเข้ากับเทอร์มิเนล SSL Nginx, ปอนด์, Stunnel, Stud และอื่น ๆ โหลดบาลานซ์ที่สร้างขึ้นในวานิชไม่ได้ยอดเยี่ยม - แต่จะเพียงพอสำหรับการตั้งค่าเซิร์ฟเวอร์ 2 เครื่อง

Nginx + PHP-FPM ใช้ได้ แต่ไม่ดื่ม Nginx kool-aid มากเกินไป มันจะดำเนินการเกือบจะเหมือนกันการกำหนดค่า Apache / mod_php แบบดั้งเดิมที่นี่เป็นบางส่วนอ่านที่ดีเกี่ยวกับเหตุผลที่จะไม่ใช้ Nginx Nginx เป็นสิ่งที่ดีและเป็นสิ่งที่ดีมาก แต่ก็ไม่ได้เป็นคอขวดของร้านวีโอไอพี - และได้รับความซับซ้อนและขาดการสนับสนุน Magento ดั้งเดิม ผู้ดูแลระบบมือใหม่ส่วนใหญ่จะได้รับประโยชน์จากการใช้ Apache / mod_php เหนือสิ่งอื่นใด สิ่งนี้อาจดูเหมือนคำแนะนำที่เก่าแก่กว่าการใช้ PHP-FPM - แต่การทดสอบประสิทธิภาพของเราแสดงให้เห็นว่าประสิทธิภาพนั้นเร็วขึ้นเพียง 7% เมื่อใช้โซลูชัน Nginx - เมื่อกำหนดค่าอย่างเหมาะสม. การปรับแต่งและประสบการณ์ที่จำเป็นสำหรับการติดตั้ง Nginx / PHP-FPM ที่มีประสิทธิภาพสูงและน่าเชื่อถือนั้นค่อนข้างกว้างใหญ่พอที่จะทำให้ Apache / mod_php มีประสิทธิภาพเหนือกว่า แล้วแต่ว่าคุณจะเลือกใช้สายไหนก็คือสายของคุณ

เซิร์ฟเวอร์ฐานข้อมูลนั้นง่าย MySQL แต่ตามที่กล่าวไว้ก่อนหน้านี้หากคุณมีไซต์ที่มีการแปลงสูงแนะนำให้กำหนดค่า Master / Slave ไม่ว่าคุณควรทำตามวิธีนี้จะถูกกำหนดโดยการอ่านบทความนี้

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

Redis ไม่พื้นเมืองวีโอไอพี แต่มีนามสกุลจากโคลิน Mollenhour - เป็นทางออกที่ดีกว่า Memcache, สนับสนุนแท็กแคชจัดเก็บเซสชั่นและแม้กระทั่งการจัดเก็บแคชถาวร - มันไม่ได้ค่อนข้างผันผวน Memcache แต่มันก็มีข้อเสีย เราพบร้านค้าขนาดใหญ่ (> 500 คำสั่งซื้อ / ชั่วโมง> 30k เฉพาะ / ชั่วโมง) ที่แคช (และแท็ก) สามารถเติมได้อย่างรวดเร็วและเมื่อจุดอิ่มตัวถูกตีกลไก LRU ค่อนข้างล้มเหลว ( แม้จะมีการตั้งค่าที่แตกต่างกัน) และทำให้เกิดปัญหาคอขวดใหญ่ทันที ดังนั้นจึงควรระมัดระวังในการตัดบันทึกเก่า ๆ ด้วยตนเอง

ดังนั้นควรใช้ฮาร์ดแวร์อะไรเพื่ออะไร

เว็บเซิร์ฟเวอร์: CPU ที่เร็วที่สุด, คอร์ CPU ส่วนใหญ่, อัตราส่วน 2GB RAM / Core
DB เซิร์ฟเวอร์: CPU ที่เร็วที่สุด, ดิสก์ I / O ที่เร็วที่สุด, RAM ส่วนใหญ่

ดังนั้นเมื่อมีการกำหนดเป้าหมาย 3 เครื่องของคุณรูปแบบที่ดีที่สุดจะเป็น:

เซิร์ฟเวอร์ 1: SSL Terminator -> วานิช -> Nginx / Apache> PHP
Server 2: Nginx / Apache> PHP, Redis, (MySQL Slave)
เซิร์ฟเวอร์ 3: MySQL

เป็นการกำหนดค่าเฉพาะของแต่ละแอปพลิเคชัน นั่นเป็นไปตามข้อกำหนดฮาร์ดแวร์ของคุณความซับซ้อนของร้านค้าประเภทและลักษณะของผู้เข้าชมและปริมาณผู้เยี่ยมชม


คำตอบที่น่าสนใจมาก FYI มีลิงก์เสียที่: "แทนที่จะใช้การกำหนดค่าแบบนี้แทน"
เจดับบลิว

1
@JW - การเชื่อมโยงเน่า Darn ฉันอัพเดทลิงค์แล้ว
Ben Lessani - Sonassi

30

คุณกำลังอยู่บนเส้นทางที่ยอดเยี่ยมด้วยการกำหนดค่าคลัสเตอร์ ฉันแนะนำให้เพิ่มโฮสต์แคชเฉพาะสำหรับ Redis; เลือกหนึ่งตัวที่มี CPU สูงและ RAM จำนวนมาก (~ 64 GB)

ต่อไปนี้คือรายการการกำหนดค่าทั้งหมดที่ฉันใช้สำหรับคลัสเตอร์ LEMP ที่มีความสมดุลสูงยอมรับข้อบกพร่องกระจายและโหลดสมดุล ซึ่งจะรวมถึงapp/etc/local.xmlที่core_config_dataโต๊ะและการกำหนดค่าสำหรับ MySQL, PHP-FPM, Nginx และ Redis ทุกตัวใช้งาน Ubuntu 12.04 LTS 64-bit การกำหนดค่าประกอบด้วยการเพิ่มประสิทธิภาพจำนวนมากโดยไม่มีข้อเสียเปรียบ

ไฮไลท์

  • ผู้ใช้งานธุรการ: 46
  • หมวดหมู่: 2,450 (ใหญ่ที่สุดมี 2,400 ผลิตภัณฑ์)
  • หน่วยงานผลิตภัณฑ์: 101,000
  • ผลิตภัณฑ์คอมโบ: 484
  • ความสัมพันธ์ผลิตภัณฑ์: 54,000
  • ในสต็อกและเปิดใช้งานผลิตภัณฑ์ที่กำหนดค่าได้: 10,100
  • บล็อก CMS: 3,100
  • หน้า CMS: 1,400

ปริมาณการใช้สิงหาคม 2013:

  • การดูหน้าเว็บ 40 ล้านต่อเดือน
  • ผู้เยี่ยมชม 2.3 ล้านคน
  • ชำระเงิน 46,000 ต่อเดือน
  • 89% ของผู้เข้าชมจากสหรัฐอเมริกา

โฮสต์เว็บ

มีโฮสต์ 10 หลังที่ซ้ำซ้อนไฟร์วอลล์ฮาร์ดแวร์ที่มีความพร้อมใช้งานสูงและตัวปรับสมดุลฮาร์ดแวร์โหลด สินทรัพย์คงที่ส่วนใหญ่จะถูกถ่ายลง CDN

  • เวลาตอบสนองเฉลี่ยทั่วทั้งไซต์: 282 ms
  • การตอบสนองโดยเฉลี่ยของ FPC: 48 ms
  • ค่าเฉลี่ยการโหลด: 0.6 ถึง 1.0 (ในการทดสอบประสิทธิภาพลดลง 35% เมื่อค่าเฉลี่ยการเข้าชม ~ 5.0)
  • Dual Intel Xeon CPU E3-1230 V2 @ 3.30GHz (ละ 4 คอร์)
  • DDR3 1333 MHz RAM 32 GB

โมดูล


โฮสต์แคช

มีโฮสต์สองโฮสต์ที่ใช้ Redis ในการกำหนดค่า master-slave ที่มี failover อัตโนมัติ อินสแตนซ์ Redis สามรายการ (เซสชัน, แบ็กเอนด์และ FPC) ใช้เพื่อเพิ่มปริมาณงานและให้ปรับพฤติกรรมการคงอยู่อย่างต่อเนื่อง

  • 3,000 คำสั่งต่อวินาที
  • เวลาตอบสนองโดยเฉลี่ย 0.7 ms
  • โหลดเฉลี่ยของ 1.0 ถึง 1.5
  • Quad Intel Xeon CPU E5-2620 0 @ 2.00GHz (6 คอร์แต่ละตัว)
  • บัฟเฟอร์ DDR3 1333 MHz RAM 128 GB
  • ดิสก์เชิงกล, RAID 1, ฮาร์ดแวร์คอนโทรลเลอร์

โฮสต์ฐานข้อมูล

มีสองโฮสต์ที่ใช้งาน MySQL 5.6.11 ในการกำหนดค่าแบบ master-slave ที่มีการป้องกันความล้มเหลวอย่างอบอุ่น

  • 1,500 คำสั่งต่อวินาที
  • เวลาตอบสนองเฉลี่ย 1.1 ms
  • โหลดเฉลี่ย 0.1 (หลัก) และ 0.4 (ทาส)
  • Quad Intel Xeon CPU E7- 2860 @ 2.27GHz (ละ 10 คอร์)
  • บัฟเฟอร์ DDR3 1333 MHz RAM 128 GB
  • SSD, RAID 1 + 0, ตัวควบคุมฮาร์ดแวร์
  • MySQL 5.6.11 พร้อม tcmalloc

การเป็น Redis นั้นเป็นเธรดเดี่ยวไม่ใช่โฮสต์แคชของคุณซึ่งมีซีพียู Quad-Core มากกว่าหรือไม่ นอกจากนี้ทำไมค่าเฉลี่ยการโหลดทาสของคุณจึงสูงกว่าค่าเฉลี่ยการโหลดหลัก
ColinM

@ColinM: ฉันไม่ได้ซื้อเซิร์ฟเวอร์ ใช่มันขับเคลื่อนมากกว่า! ทาสใช้สำหรับการเชื่อมต่อการอ่าน Magento ดังนั้นจึงไม่เพียง แต่จะเป็นไปตามการเขียนของอาจารย์เท่านั้น แต่ยังรองรับการอ่านจำนวนมาก
parhamr


0

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

เปิดใช้งานคิวรีแบบสอบถาม mysql ใน /etc/mysql/my.conf

query_cache_size = 268435456
query_cache_type= 1
query_cache_limit=1048576

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


-2

ด้วยการกำหนดค่าปัจจุบันของเราเราได้รับการตอบสนองเริ่มต้นใน 400 ms และเอกสารเสร็จสมบูรณ์ใน 2 วินาที (ใช้การเชื่อมต่อมาตรฐาน 5mbps) ขนาดหน้าแรกของเราคือ 1mb

การตั้งค่าของเรานั้นใช้ AWS ดังนี้: เรามีอินสแตนซ์ ec2 ที่มี load balancer เชื่อมต่อกับฐานข้อมูล RDS (ที่มี failover) นอกจากนี้เรายังใช้แคชแบบเต็มหน้าด้วยแบ็กเอนด์แคชสีแดงสำหรับที่เก็บแคชและที่เก็บเซสชัน

โดยเฉลี่ยเรามีผู้เข้าชมวันละ 300 - 400 คน แต่เมื่อเปิดใช้งานแคช redis เรามีการใช้ทรัพยากร ec2 น้อยที่สุดในขณะที่รักษาความเร็วและลดค่าใช้จ่ายลง

เหตุผลที่เรามี load balancer คือ ec2 นั้นถูกเซ็ตอัพเพื่อบูตอัพอินสแตนซ์ใหม่โดยอัตโนมัติหากมีโอกาสน้อยที่เราจะมีทราฟิก spikes ที่เซ็ตอัพปัจจุบันไม่สามารถจัดการได้


เพียงเพิ่มประโยชน์ของการใช้ Elastic Load Balancer ใน AWS - คุณสามารถถ่ายโอนการเชื่อมต่อ SSL ของคุณได้และไม่ต้องกังวลกับช่องโหว่ OpenSSL มากมายที่คุณต้องใช้กับอินสแตนซ์ EC2 ของคุณอย่างต่อเนื่องหากคุณจัดการ ด้วยตัวคุณเอง
Robbie Averill
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.