Tôi có một tình huống trong đó xảy ra sau đây:
Chúng tôi đang sử dụng linode với 8 lõi, 8gb ram, 2,6 ghz - sử dụng nginx + php-fpm - chúng tôi đang nhận được các biểu đồ sử dụng cpu cực kỳ cao (mà chúng tôi không muốn trở thành một người hàng xóm tồi tệ như vậy) ...
Chúng tôi có khoảng dưới 100 người dùng trên trang web cùng một lúc - vì vậy tình huống này cũng vô cùng xấu hổ - rằng việc sử dụng cpu của chúng tôi rất cao.
Chúng tôi đang sử dụng một Framework rất khủng khiếp, có thể là cpu, rất kinh khủng, thay vì các khung công tác nổi tiếng, tài liệu tốt, được chế tạo tốt như wordpress hoặc drupal, trong đó có RẤT NHIỀU tài liệu về bộ nhớ đệm (cũng như các plugin xử lý bộ nhớ đệm) php trên nền tảng nginx + php_fpm.
Do đó, chúng tôi có khoảng 6 quy trình php-fpm mở mà khi CHẠY, hãy tiêu thụ số lượng Lpu riêng lẻ (30+ và thường gần 99%) - và tôi thực sự không biết làm thế nào để ngăn chặn chúng sử dụng quá nhiều cpu . Tôi không thể biết tập lệnh php nào đang gây ra các đột biến này bởi vì chúng xảy ra mọi lúc ... thường chỉ có 1 hoặc 2 đang chạy - nhưng khi cả 6 chạy, chúng tôi sẽ tối đa hóa tất cả 8 cpus.
Tệp pool.d / www.conf của tôi có các cài đặt sau:
pm = dynamic pm.max_children = 10 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 6
Chúng tôi đã thực hiện cài đặt này bởi vì, theo cách mà tôi diễn giải nó, bộ nhớ của chúng tôi thực sự tuyệt vời (htop hiển thị 472/7000 + mb được sử dụng, không trao đổi, v.v.) và chúng tôi có thể xử lý nhiều quy trình hơn và phá vỡ dòng chờ đợi để có được đã xử lý - NHƯNG không may, vì mỗi quy trình quá mãnh liệt trên cpu của chúng tôi khi chạy - chúng tôi cuối cùng điều khiển CPU của chúng tôi qua mái nhà - vì vậy chúng tôi không thể xử lý đủ các quy trình.
Câu hỏi - chúng ta có thể làm gì để giảm quá trình sử dụng cpu php-fpm để chúng ta có thể tăng cài đặt trong tệp conf pool đó cho php-fpm - và cũng có, /var/log/php5-fpm.log đang la hét chúng tôi để tăng con cái của chúng tôi và điều chỉnh / tăng máy chủ tối thiểu / tối đa / bắt đầu của chúng tôi. Nhưng làm như vậy làm cho tải trung bình của chúng tôi điên như đã nêu trước đây. Làm thế nào chúng ta có thể làm như vậy mà không nhất thiết phải sử dụng bộ đệm hoặc các tùy chọn của chúng ta là gì?
Ý kiến của tôi? Tôi đã đọc những điều về việc sử dụng cpulimit để đảm bảo không có quá trình nào mất nhiều hơn một lượng cpu được phân bổ - nhưng điều đó có làm chậm mọi thứ không thể sử dụng được không? Hoặc khi làm như vậy, chúng tôi có thể tăng khả năng chạy nhiều hơn một vài quy trình - Tôi cũng nghĩ rằng việc chạy hai nhóm - một cho trang web hướng về phía trước của chúng tôi (những gì khách hàng trải nghiệm) và một cho phần phụ trợ (ảnh hưởng đến trang web hướng về phía trước của chúng tôi khi thời gian báo cáo -consuming đang được chạy).
Tôi đã dành vài ngày để nghiên cứu, tìm hiểu, v.v. về chủ đề này - và thật khó khăn vì tình hình của mọi người rất độc đáo đối với hệ thống của họ - rắc rối là ở một khuôn khổ cụ thể chưa từng được viết, có thể được viết kém - đang gây ra thật khó để tìm ra giải pháp. Chúng ta cũng không thể loại bỏ khung này - tôi phải tìm một giải pháp nào đó.
CẬP NHẬT: Tôi đã triển khai memcache để lưu trữ các phiên php - vì khung này phụ thuộc rất nhiều vào các phiên của người dùng và bản chất của hệ thống của chúng tôi là nhân viên thường sử dụng nhiều tab mỗi lần - mỗi lần kiểm tra lại các phiên để xác nhận khả năng / dữ liệu người dùng / v.v. ... vì vậy tôi hy vọng sẽ thấy hiệu suất tăng lên từ điều này - hoan nghênh nhận xét về điều đó nếu bạn thích - Tôi sẽ thấy nó diễn ra như thế nào vào ngày mai khi chúng ta vượt qua thời gian cao điểm âm lượng cao hơn.