Các MPM của Apache - Công nhân so với Prefork


13

Tôi đang cố gắng tìm ra đâu là MPM Apache tốt nhất tôi có thể cài đặt trên VPS của mình. Tôi đã thấy một số điểm chuẩn và MPM Worker có vẻ hoạt động tốt hơn Prefork nhưng vì một số lý do, mọi người dường như đang khuyến nghị Prefork over Worker cho các thiết lập PHP.

Đây có phải chỉ vì một số chức năng PHP không an toàn cho chuỗi? Chỉ setlocale()xuất hiện trong đầu, nhưng tôi sẽ sử dụng cùng một ngôn ngữ trong mọi trường hợp vì vậy tôi không nghĩ đó sẽ là một vấn đề. VPS của tôi có ít bộ nhớ và tôi cảm thấy MPM worker sẽ phù hợp hơn với nhu cầu của tôi, tuy nhiên tôi không chắc chắn.

Ai đó có thể giúp tôi làm cho tâm trí của tôi về điều này? Cảm ơn!


PS: Tôi cũng đã xem xét nginx và lighttpd. nginx có vẻ tuyệt vời nhưng tôi đang cố gắng tránh biên dịch từ nguồn và tôi vẫn không hiểu php-fpm dùng để làm gì. Về lighttpd - thật dễ dàng để thiết lập PHP / FCGI với nó, nhưng tôi nghe nói rằng nó có rò rỉ bộ nhớ. Điều này có còn đúng không?


2
Vấn đề là trong khi PHP cốt lõi hiện được coi là luồng an toàn, khi nói đến các phần mở rộng, tất cả các cược đã bị tắt.
mattdm

Câu trả lời:


12

Bạn nên sử dụng prefork khi sử dụng apache + mod_php. Câu hỏi thường gặp nêu rõ lý do tại sao:

http://www.php.net/manual/en/faq.installation.php#faq.installation.apache2

Tại sao tôi không nên sử dụng Apache2 với MPM luồng trong môi trường sản xuất?

PHP là keo. Nó là chất keo được sử dụng để xây dựng các ứng dụng web thú vị bằng cách gắn kết hàng tá thư viện của bên thứ 3 với nhau và làm cho tất cả xuất hiện dưới dạng một thực thể kết hợp thông qua giao diện ngôn ngữ trực quan và dễ học. Tính linh hoạt và sức mạnh của PHP phụ thuộc vào sự ổn định và mạnh mẽ của nền tảng cơ bản. Nó cần một hệ điều hành hoạt động, một máy chủ web hoạt động và các thư viện bên thứ 3 hoạt động để gắn kết với nhau. Khi bất kỳ thứ nào trong số này ngừng hoạt động, PHP cần có cách để xác định các vấn đề và khắc phục chúng nhanh chóng. Khi bạn làm cho khung cơ bản phức tạp hơn bằng cách không có các luồng thực thi hoàn toàn riêng biệt, các phân đoạn bộ nhớ tách biệt hoàn toàn và một hộp cát mạnh cho mỗi yêu cầu phát, các điểm yếu tiếp theo được đưa vào hệ thống của PHP.

nginx + php-fpm cũng là một cách tuyệt vời để chạy các ứng dụng php. nginx có hỗ trợ riêng cho FastCGI và php-fpm là một trong những cách tốt nhất để chạy php trong môi trường FastCGI. Xem tài liệu php tại đây:

http://www.php.net/manual/en/install.fpm.php


Về MPM của Apache tôi nghĩ rằng tôi đã nhận được nó, prefork là con đường để đi. Tôi thiên về thiết lập nginx hoặc lighttpd do mức tiêu thụ bộ nhớ cao của Apache. Lighttpd và PHP-FCGI hoạt động tốt khi cài đặt với khả năng, tuy nhiên tôi không chắc liệu bộ nhớ có bị rò rỉ hay không, mọi người cứ nói về ngày 06/07 vẫn còn. Tôi cũng đọc Nginx có mức sử dụng CPU thấp hơn nhưng tôi không thể làm cho nó hoạt động với PHP-CGI chứ không nói gì với PHP-FPM. Có cách nào dễ dàng để cài đặt cái này trên Ubuntu bằng trình quản lý gói không? Bạn có đề nghị bất kỳ đọc về chủ đề này?
Alix Axel

Với đa vũ trụ được kích hoạt, tôi có thể "apt-get install nginx" trên lucid và nó chạy như một nhà vô địch - Tôi đang sử dụng trên các hệ thống sản xuất. Có một ví dụ về điểm khởi đầu tốt ở đây, howtoforge.com/ , nhưng như mọi khi YMMV.
dialt0ne

Tôi có thể cài đặt nginx bằng apt nhưng tôi không thể liên kết nó với trình thông dịch PHP. Liên kết bạn cung cấp có một nguồn mới dường như cung cấp php5-fpmgói. Tôi sẽ thử nó.
Alix Axel

Liên kết này có thể tốt hơn howtoforge.com/ Từ Tôi đang sử dụng repo brianmercer cho các hệ thống sản xuất của tôi cho php5-fpm.
dialt0ne
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.