Nginx + PHP 5.3.3 (ด้วย php-fpm) - การใช้งานหน่วยความจำ?


6

ฉันเพิ่งซื้อXen VPS (linode.com) กับ Debian 5.0 เลนนี่ (i386), 512MB RAM ในขณะนี้ฉันมีเว็บไซต์ขนาดเล็กเพียงสามแห่งเท่านั้น (สร้างขึ้นโดยใช้ Drupal) โดยมีผู้ใช้งานทั้งหมดประมาณ 600 คนต่อวันบนเซิร์ฟเวอร์นี้

เป็นเว็บเซิร์ฟเวอร์ฉันใช้nginx 0.7.67 ( PHP 5.3.3กับphp-fpm ) อัตราสิ้นเปลืองหน่วยความจำเฉลี่ยอยู่ที่ประมาณ100-105MB นี่คือสิ่งที่กราฟ Munin แสดง:

ข้อความแสดงแทน

และนี่คือความหมายของคำสั่ง "สุดยอด" (เรียงตามการใช้หน่วยความจำ):

ข้อความแสดงแทน

ใน php5-fpm.conf ของฉัน:

pm = dynamic
pm.max_children = 50
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500

ก่อนที่จะย้ายโครงการขนาดใหญ่ไปยัง VPS นี้ฉันต้องการทราบว่านี่เป็นการใช้หน่วยความจำปกติสำหรับการกำหนดค่าเซิร์ฟเวอร์ประเภทนี้หรือไม่ จำนวนผู้ใช้บนเว็บไซต์ (สมมติว่าสร้างด้วย Zend Framework) VPS นี้สามารถจัดการได้

ขอขอบคุณ!


อาจคุ้มค่าที่จะโพสต์สิ่งนี้ไปยังรายชื่อผู้รับจดหมาย php-fpm: highload-php-en@googlegroups.com
iainlbc

1
+1 คำถามที่ถามกันมาก
Jarrod Dixon

คำตอบ:


7

สำหรับฉันที่ดูดี PHP + MySQL ของคุณใช้ RAM เพียงประมาณ 100 เมกะไบต์ทำให้มีพื้นที่เหลือเฟือสำหรับระบบปฏิบัติการในการหายใจ

สำหรับ "ผู้ใช้จำนวน VPS นี้ที่สามารถจัดการได้" คำถาม: มันขึ้นอยู่กับ ด้วยการแคชที่เหมาะสมและแนวปฏิบัติที่เหมาะสมอื่น ๆ ฉันคิดว่าควรจัดการอย่างน้อยหลายสิบคำขอต่อวินาทีถ้าไม่มาก

หากเนื้อหามีความไดนามิกสูงและไม่สามารถแคชได้ดีมากและโครงสร้างฐานข้อมูลมีความซับซ้อนและ / หรือฐานข้อมูลมีขนาดใหญ่ประสิทธิภาพจะลดลง

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


7

มันไม่ดีกระบวนการ php5-fpm ของคุณใช้เวลาประมาณ 35Mo ด้วยการกำหนดค่านี้คุณอาจมี 50 กระบวนการ (max_children = 50) โดยแต่ละกระบวนการมีการจัดสรร 35mo ดังนั้นเครื่องของคุณที่มีเพียง 512Mo จะทำการสลับ ฉันคิดว่าขีด จำกัด ของคุณอยู่ที่ประมาณ 10 กระบวนการของ php-fpm (max_children = 10)


3
ถูกต้องกับเงิน ดูผลลัพธ์สูงสุดของคุณ - กระบวนการลูกแต่ละ php5-fpm ใช้เวลาระหว่าง 30 และ 45 Mb คุณมีพื้นที่ว่างประมาณ 300 Mb เพื่ออนุรักษ์และหลีกเลี่ยงการแลกเปลี่ยนพิจารณาการตั้งค่าลูกสูงสุดของคุณถึง 7
mattandrews

2

หินลิโนด! คำแนะนำเดียวของฉันคือการย้าย MySQL ไปยัง 512MB linode ที่แยกต่างหาก ผลประโยชน์มีมากมายและหากไม่มีเงิน $ 20 / เดือนจะทำให้ธนาคารพังก็ไม่มีข้อเสีย

ลำไส้ของฉันบอกฉันว่าคุณกำลังใช้เดเบียนหรืออูบุนตู .. ลองดูคลังสคริปต์สแต็ก มีเซิร์ฟเวอร์ MySQL เฉพาะที่ปรับให้เหมาะสมสำหรับ linode จากนั้นเพิ่ม IP ส่วนตัว (ฟรี) ไปยังเซิร์ฟเวอร์ไฟล์ / nginx / php-fpm ของคุณและเพิ่ม IP ส่วนตัวลงในเซิร์ฟเวอร์ db ของคุณ ข้อมูลทั้งหมดจะเดินทางภายในเครือข่ายท้องถิ่นที่ DC ของ linode ของคุณ มันเร็วและไม่นับรวมกับแบนด์วิดธ์รายเดือนของคุณ

คุณสามารถวางเว็บไซต์ 'โครงการขนาดใหญ่' ของคุณไว้ใน linux nginx / php-fpm เดียวกันได้ ในขณะที่ปริมาณการใช้เพิ่มขึ้นคุณสามารถเพิ่ม VPS แบบ memcached โดยเฉพาะ, PHP-FPM VPS แบบเฉพาะและปรับขนาดตามแนวนอนในแนวดิ่งตามจำนวน linux 512 512MB ที่คุณต้องการ / ต้องการ

db ของคุณจะเพิ่มขึ้นในแนวตั้ง ... ดังนั้นเมื่อมันเริ่มหิวให้ชนกับขนาดถัดไป

ขึ้นอยู่กับปัจจัยต่างๆเช่นแคช, โค้ดสะอาดและ # ของการเรียก db ต่อการโหลดหน้า ... การแยกส่วนหน้าจาก db เปิดประตูให้ "ปรับขนาดใหญ่เท่าที่คุณต้องการ" ได้อย่างง่ายดาย


0

ฉันกังวลเกี่ยวกับความจริงข้อนี้เช่นกัน ฉันกำลังใช้งานระบบเซิร์ฟเวอร์เสมือน Amazon EC2 ด้วยอินสแตนซ์ขนาดเล็กที่มี "หน่วยความจำ" เพียง 613Mb ฉันสามารถพูดได้จากการทดสอบของเราว่าสามารถจัดการเด็กอย่างน้อย 50 คนที่ทำงานพร้อมกันได้โดยไม่มีปัญหาใด ๆ ฉันไม่สามารถอธิบายพฤติกรรม แต่สามารถบอกคุณได้ว่ามันยังใช้งานได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.