ทำไม Apache จึงใช้กระบวนการหลายอย่าง? แรมที่นี่มากเกินไป?


17

ฉันสังเกตเห็น Apache กำลังทำงานหลายกระบวนการในเซิร์ฟเวอร์ LAMP ของฉัน (ubuntu 10.10) ฉันแค่ใช้เว็บไซต์ Wordpress กับ MySQL เป็นฐานข้อมูล ดูเหมือนว่าข้อมูล www กำลังเรียกใช้ apache2 มากกว่าที่ควร (ใช้หน่วยความจำมากเกินไป) ฉันถูกต้องแล้ว:

ID      Owner       Size        Command   
31200   www-data    251236 kB   /usr/sbin/apache2 -k start
20678   www-data    250948 kB   /usr/sbin/apache2 -k start
25781   www-data    248888 kB   /usr/sbin/apache2 -k start
31045   www-data    248844 kB   /usr/sbin/apache2 -k start
19926   www-data    246480 kB   /usr/sbin/apache2 -k start
20749   www-data    239380 kB   /usr/sbin/apache2 -k start
32616   www-data    238632 kB   /usr/sbin/apache2 -k start
8846    mysql   238128 kB   /usr/sbin/mysqld
24178   www-data    234228 kB   /usr/sbin/apache2 -k start
32618   www-data    232344 kB   /usr/sbin/apache2 -k start
32615   www-data    232204 kB   /usr/sbin/apache2 -k start
19805   root    208156 kB   /usr/sbin/apache2 -k start

นี่เป็นกรณีเดียวกันกับงานก่อนหน้าของฉันด้วย (CentOS) ฉันแค่คิดว่าพวกเขาเป็นกระบวนการเด็กทั้งหมด apache เริ่มต้นสำหรับการร้องขอแต่ละครั้งเราไม่เคยประสบปัญหาด้านประสิทธิภาพการทำงาน / หน่วยความจำเนื่องจากเรื่องนี้แม้ว่า ...
Nandhini Anand

อืมมม ฉันแค่กังวลเกี่ยวกับหน่วยความจำไม่เพียงพอในระบบนี้เนื่องจากเป็น VPS
Trent Scott

คำตอบ:


19

Apache กำลังเรียกใช้หลายกระบวนการเพื่อให้พร้อมเมื่อมีคำขอของลูกค้าเข้ามาการวางกระบวนการเซิร์ฟเวอร์ช้าดังนั้นจึงเป็นการดีที่สุดที่จะมีหนึ่งรอลูกค้า

สำหรับการใช้หน่วยความจำคุณควรคำนึงถึงขนาด RES ของบัญชี (ดังที่แสดงไว้ด้านบน) ซึ่งเป็นจำนวนหน่วยความจำกายภาพที่ใช้โดยงาน

ทำไมคุณคิดว่าคุณมีกระบวนการ apache2 มากเกินไปโดยใช้หน่วยความจำมากเกินไป? คุณคาดหวังอะไร? ทำไมคุณคาดหวังเช่นนั้น?


นี่เป็นภาพบนคลาวด์ ดูเหมือนว่าจะใช้หน่วยความจำมากกว่าที่ควรสำหรับไซต์ขนาดเล็กเช่นนั้น หน่วยความจำจริง: 496.36 MB รวม / 92.02 MB ฟรีพื้นที่สว็อป: 1024 MB ทั้งหมด / 975.93 MB ฟรี
Trent Scott

1
@Trenton: ด้วยคำตอบของ pawel ที่ฟังดูดี นอกจากว่าคุณจะเจอปัญหากับ mysql หรือหน่วยความจำไม่พอคุณควรจะปรับ หากเกิดขึ้นคุณควรมองหาการกำหนดค่า Apache เพื่อ จำกัด กระบวนการที่เกิดขึ้นเหล่านี้
Nandhini Anand

2
Linux จะพยายามใช้หน่วยความจำให้มากที่สุด หากไม่มีสิ่งใดที่จะนำมาใส่ใหม่มันจะใช้ RAM สำหรับแคชและดิสก์บัฟเฟอร์ หน่วยความจำว่างเปล่าเป็นหน่วยความจำที่สูญเปล่า (ถ้าคุณไม่มี RAM เหลือ)
Paweł Brodacki

3

ดังที่คำตอบของ Pawel อธิบาย apache ใช้กระบวนการต่อโมเดลการร้องขอด้วยพูลกระบวนการ (หรือเธรดต่อการร้องขอด้วย mpm_worker)

คุณอาจสามารถลดการใช้หน่วยความจำได้โดยใช้เว็บเซิร์ฟเวอร์โดยอิงกับ non-blocking IO เช่น nginx ด้วยวิธีนี้เซิร์ฟเวอร์ไม่จำเป็นต้องอุทิศกระบวนการ / เธรดต่อการเชื่อมต่อ


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