Tôi có một cặp máy chủ lưu trữ một trang web thương mại điện tử Magento duy nhất với lưu lượng truy cập vừa phải (60k lượt xem trang mỗi ngày được báo cáo từ Google Analytics, tôi nghĩ khoảng 80k được báo cáo trên chính máy chủ). Máy chủ cơ sở dữ liệu chạy trơn tru và nhanh chóng, ngoài một tiếng nấc thỉnh thoảng hiếm gặp, nhưng máy chủ apache thường xuyên bị đổ.
Tôi đã thiết lập magento để sử dụng bộ đệm ẩn PHP (APC) được đề xuất, cũng như giữ các tệp bộ nhớ cache của riêng nó trong một tmpfs 1,5 gig (tmpfs này thường xuyên khá đầy đủ và tôi có một đoạn script chạy để xóa các tệp bộ đệm khi tmpfs đầy đủ hơn 80%). Tôi phục vụ hầu hết các hình ảnh từ amazon cloudfront. Gần đây tôi đã thiết lập nginx như một proxy ngược cho apache (nginx cũng phục vụ các tệp tĩnh). Tôi đã cấu hình apache theo khả năng tốt nhất của mình - thủ tục lưu trữ và máy chủ lưu trữ bị tắt và prefork được cấu hình như sau:
<IfModule prefork.c>
StartServers 50
MinSpareServers 50
MaxSpareServers 100
ServerLimit 512
MaxClients 256
MaxRequestsPerChild 400
</IfModule>
Tôi đã không tắt các tập tin .htaccess và đăng nhập truy cập được bật. Tôi biết có một số mô-đun tôi có thể tắt. Tôi không chắc chắn bất kỳ thay đổi nào trong ba thay đổi đó sẽ có, nếu có.
Máy chủ apache là một VPS có 6 GB RAM. Tính đến thời điểm viết máy chủ đang báo cáo load average: 17.77, 18.27, 49.76
, nhưng có khoảng 2 GB RAM miễn phí. Khi nó trở nên rất tệ, tải sẽ chuyển sang 120+ và vẫn ở đó - apache khởi động lại sẽ đưa trang web trở lại và tải xuống trở lại.
vmstat
là (trong khi máy chủ đang báo cáo tải ở trên), tôi nghĩ, hiển thị giá trị nhàn rỗi của CPU dao động trong khoảng từ 0 đến 70 hoặc hơn. iostat
đang hiển thị giá trị iowait trong khoảng từ 0 đến 0,2%.
Tôi hơi bị mắc kẹt. Điều tôi ít biết là nói với tôi rằng vấn đề là CPU bị quá tải do sự kết hợp của mã đang được chạy và số lượng người dùng. Nhưng tôi không đủ kinh nghiệm để chắc chắn rằng đó là vấn đề. Nếu đó là vấn đề, tôi nghĩ các giải pháp là cải thiện mã hoặc phân chia trang web lưu trữ trên hai VPS bằng bộ cân bằng tải.
Vì vậy, tôi đoán câu hỏi của tôi là:
- Tôi có thể làm gì khác để tìm sự cố hoặc tắc nghẽn trên máy chủ?
- Có bất kỳ thay đổi rõ ràng nào tôi có thể thực hiện cho cấu hình máy chủ để cải thiện điều này không?
- Có phải là một ý tưởng tốt để thiết lập một hệ thống tự động để khởi động lại apache khi tải vượt quá một mức nhất định?
- Từ những điều trên, có khả năng trang web đã vượt xa máy chủ như thế nào?
Biên tập:
Tôi tìm thấy một cái gì đó kỳ lạ - / var / spool / mail / root đã lớn ... 38 gig. Nghe có vẻ ... không lành mạnh. Có thể đó là vấn đề?