Chạy Lighttpd đằng sau Apache để phục vụ các tập tin tĩnh chắc chắn dường như Braindead để tôi. Apache vẫn phải giải nén các gói HTTP và phân tích cú pháp yêu cầu thông qua cây phân tích cú pháp của nó, gửi các yêu cầu proxy, và sau đó Lighttpd phải giải nén lại, nhấn hệ thống tệp và gửi các tệp trở lại thông qua Apache. Tôi đã không bao giờ nghe nói về bất cứ ai sử dụng một thiết lập như thế này trong sản xuất.
Những gì bạn sẽ thấy, là những người sử dụng máy chủ web nhẹ như Nginx làm máy chủ giao diện người dùng để phân phối các tệp tĩnh và URL động proxy tới Apache.Hoặc, bạn có thể chạy Varnish hoặc Squid làm lối vào proxy ngược bộ đệm, để tất cả các tệp tĩnh lưu lượng truy cập cao của bạn (tức là hình ảnh, CSS, v.v. và bất kỳ trang động nào bạn sẵn sàng gửi tiêu đề thân thiện với bộ nhớ cache) phục vụ hết bộ nhớ.
Apache cũng có thể được tối ưu hóa để phân phối tệp tĩnh - vì vậy thường khi tôi nghe mọi người phàn nàn về Apache, họ thực sự không biết cách định cấu hình nó. Họ đã từng sử dụng MPK prefork (so với luồng hoặc công nhân) và có tất cả các loại mô-đun được kích hoạt (thường là chúng chạy từ gói Apache bồn rửa nhà bếp phân phối Linux xây dựng mọi thứ dưới dạng mô đun và mặc định để bật 10-20 mô-đun trở lên). Điều chỉnh Apache bằng cách tắt các mô-đun không cần thiết/các tính năng ngu ngốc như hỗ trợ cho .htaccess (làm cho Apache quét hệ thống tập tin theo mọi yêu cầu!) Trước tiên. (Bạn cũng có thể chạy hai phiên bản Apache, với Apache "nhẹ" làm giao diện người dùng cho Apache "nặng" cho các yêu cầu động ... có thể giao diện người dùng của bạn đã được tạo luồng nhưng phần cuối của bạn là tiền bối vì bạn phải chạy thread-unsafe module bên ngoài như mod_php)
Re:.
vì bạn vẫn có một quá trình apache sinh ra cho mọi yêu cầu mà đến trong, làm thế nào thực hiện điều này một cách tích cực tác động tải? Từ những gì tôi có thể thấy kích thước của quá trình Apache ủy quyền yêu cầu thông qua lighttpd của nó là lớn vì nó sẽ là nếu nó đang phục vụ chính tệp .
Nếu bạn đang tạo ra các quy trình trên mọi yêu cầu, thì điều đó có nghĩa là bạn đang sử dụng MPC prefork. Hãy ghi nhớ rằng khi hệ điều hành báo cáo mức sử dụng bộ nhớ cho từng quy trình này, không phải tất cả bộ nhớ đó đều có dây, rất nhiều các quá trình đó không hoạt động. Và khi bạn đang nói về tốc độ, bạn quan tâm nhiều hơn với yêu cầu phân tích cú pháp và các chi nhánh mã nội bộ cho một yêu cầu cụ thể (xử lý bao nhiêu máy chủ đang hoạt động?) So với việc sử dụng bộ nhớ được báo cáo bởi hệ điều hành. Ví dụ, nếu bạn kích hoạt một cái gì đó như mod_php, thì mỗi quy trình công nhân đó sẽ tăng lên ngay lập tức khoảng 20-40M (tùy thuộc vào những gì được kích hoạt trong trình thông dịch PHP của bạn), nhưng điều đó không có nghĩa là Apache sử dụng bộ nhớ đó trên các yêu cầu tĩnh. Tất nhiên nếu bạn đang tối ưu hóa máy chủ của bạn cho đồng thời tối đa trên các tập tin tĩnh nhỏ, sau đó cho phép mod_php vẫn sẽ rất xấu, bạn sẽ không thể phù hợp với gần như nhiều quá trình prefork vào RAM. Tôi có lẽ có thể đưa ra một "cấu hình cơn ác mộng" cho Apache rằng sẽ làm cho nó thực sự chậm hơn để phân phối các tệp tĩnh hơn proxy các yêu cầu đó đến một Lighttpd phụ trợ, nhưng nó sẽ liên quan đến việc bật các tính năng đắt tiền như .htaccess trong Apache bị vô hiệu hóa trong Lighttpd, vì vậy nó sẽ không thực sự công bằng.
Quy trình CGI sẽ tiêu thụ phần còn lại của sự khác biệt;) Điều này sẽ không tạo nên sự khác biệt nào cả. –