Máy tính Php-fpm
Bạn đã bao giờ tự hỏi làm thế nào bạn có thể điều chỉnh cấu hình máy chủ của mình để tận dụng tối đa số tiền bạn đang trả chưa? Show từ chối trách nhiệm. Điều này không có nghĩa đó là thiết lập máy chủ hoàn hảo, nhưng đó là một khởi đầu tốt. Mỗi yêu cầu là duy nhất và hiểu cách thức hoạt động của nó luôn là bước đầu tiên. Có tài liệu tốt dưới dạng một bài đăng trên blog giúp chúng tôi tiết kiệm rất nhiều thời gian và công sức, vì vậy chúng tôi cũng muốn chia sẻ kinh nghiệm của mình Tại Promet, chúng tôi sử dụng nginx và php-fpm cho máy chủ của mình. Một lợi ích tốt của việc này so với việc sử dụng mod_php cũ tốt từ apache là nginx có thể hoạt động như một proxy và sẽ phục vụ trực tiếp các tệp tĩnh, chỉ những tệp có phần mở rộng php mới được chuyển đến fpm-php Tối ưu hóa php-fpm ban đầu rất phức tạp nhưng một khi bạn hiểu cách thức hoạt động của nó thì nó sẽ dễ dàng hơn bạn nghĩ một chút. Chúng tôi đang sử dụng hệ thống cơ sở debian nên vị trí mặc định của tệp cấu hình là /etc/php5/fpm/pool. d/www. conf Lựa chọn chiến lược tốt nhấtCó ba chiến lược về cách php-fpm phân bổ bộ nhớ. tĩnh, động và theo yêu cầu
Lúc đầu, việc chọn loại chiến lược nào sẽ khá khó hiểu, nhưng trong số ba loại chiến lược, bạn nên luôn sử dụng Động và theo yêu cầu. Điều này cho phép bạn phân bổ bộ nhớ động cho máy chủ web của mình để quản lý hiệu quả tài nguyên máy chủ của bạn Chúng tôi sẽ sử dụng chiến lược theo yêu cầu, về cơ bản có nghĩa là nó sẽ bắt đầu hoặc kết thúc quy trình mới dựa trên nhu cầu. Ưu điểm của việc này là sự đơn giản vì bạn chỉ cần xác định một cài đặt, “max_children,” và bạn có thể để mọi thứ khác như mặc định Hãy lấy thông số máy chủ sau đây làm ví dụ Hiện tại, chúng tôi sẽ sử dụng các giá trị mặc định của các gói. Chúng tôi sẽ tính toán cài đặt tối ưu dựa trên việc sử dụng quy trình. Vì vậy, trước tiên bạn cần có một số lưu lượng truy cập Xác định bộ nhớ cho mỗi tiến trình conChúng ta cần xác định dung lượng bộ nhớ mà mỗi tiến trình con của php-fpm đang sử dụng để tính giá trị cuối cùng. Tôi sử dụng tập lệnh có tên ps_mem để nhận một số thống kê về quy trình và bộ nhớ của mình
Điều này có nghĩa là php-fpm đang sử dụng tổng cộng 1. 9 GiB với 41 quy trình. Sau khi chuyển đổi giá trị tính bằng Megabyte, chúng tôi sẽ chia nó cho số lượng quy trình. Điều này sẽ cho chúng ta biết. Mỗi tiến trình con (41) đang tiêu thụ bao nhiêu
Bây giờ bạn có thể đặt chiều. max_children để có tối đa 62. 5 Phần kết luậnVà thế là xong nhé mọi người. Tôi hy vọng điều này đã được cung cấp thông tin cho bạn cũng như cho chúng tôi. Như mọi khi, chúng tôi muốn nghe bất kỳ lời chỉ trích mang tính xây dựng nào và điều này sẽ giúp ích cho mọi người như thế nào, vui lòng liên hệ với chúng tôi nếu bạn nghĩ rằng điều gì đó có thể được cải thiện Tôi đã phải xử lý lượng truy cập cao trong sự nghiệp của mình và tôi đã chiến đấu với thời gian ngừng hoạt động, trí nhớ không được sử dụng và rất nhiều rắc rối trong quá khứ của mình. Trong bài viết này, tôi muốn đưa ra hướng dẫn từng bước về cài đặt hiệu suất apache2, đây là kết quả tập trung của rất nhiều lần đọc và thử môi trường của tôi
1. Tính toán kích thước quy trìnhBạn cần biết có bao nhiêu quy trình có thể chạy trên máy của mình. Vì vậy, tính toán kích thước quy trình của trình điều khiển CPU/bộ nhớ chính của bạn là cần thiết Có một số phương pháp tính toán ngoài kia. Cá nhân tôi thích tập lệnh python này vì nó tính đến bộ nhớ dùng chung và sẽ cung cấp thông tin chi tiết về việc sử dụng bộ nhớ thực cd ~ ps_mem. py sẽ tạo ra đầu ra như thế này Ở đây bạn có thể thấy rằng có 30 quy trình apache2, tiêu thụ tổng cộng 139MiB, vì vậy mỗi quy trình Apache đang sử dụng khoảng 5MiB RAM. php-fpm5. 6 quá trình sẽ sử dụng khoảng 50MiB 2. Tính MaxRequestWorkers của apacheTuy nhiên, để an toàn, tôi sẽ dành 15% bộ nhớ cho tất cả các quy trình khác (trong trường hợp của tôi là ~2,4GiB) và làm tròn kích thước quy trình apache lên 5MiB MaxRequestWorkers = (Total RAM - Memory used for Linux, DB, etc.) / process size 3. Tính con số tối đa php-fpmTuy nhiên, để an toàn, tôi sẽ dự trữ 1 GiB cho tất cả các quy trình khác và làm tròn kích thước quy trình php lên 55MiB maxclients = (Total RAM - Memory used for Linux, DB, etc.) / process size Đồng nghiệp của tôi Thomas Herweg đã chuẩn bị Bảng Excel này để tính toán. https. //s3. quả hồ trăn. io/tải xuống/apache_performance. xlsx Thiết lập chi tiếtTrong tệp MaxRequestWorkers = (Total RAM - Memory used for Linux, DB, etc.) / process size 0
Lưu ý rằng cài đặt mặc định không chứa “Giới hạn máy chủ”, vì vậy tôi đã thêm nó vào đây Trong MaxRequestWorkers = (Total RAM - Memory used for Linux, DB, etc.) / process size 1 thay đổi các cài đặt saupm = dynamic Để tìm hiểu về tất cả các cài đặt php-fpm, tôi khuyên bạn nên xem video trên trang đó. https. //máy chủ cho tin tặc. com/c/php-fpm-quy trình-quản lý Cài đặt cuối cùng của tôiMáy chủ của tôi có 16GB RAM và 4 CPU à 2,4GHz. Quy trình apache trung bình của tôi có 5 MB, quy trình PHP trung bình chiếm 55 MB MaxRequestWorkers = (Total RAM - Memory used for Linux, DB, etc.) / process size 2MaxRequestWorkers = (Total RAM - Memory used for Linux, DB, etc.) / process size 1; Optimized for php-fpm request size of 55MB on AWS EC2 m4.xlarge (4CPU cores, 16GB RAM) Lưu cài đặt của bạn và khởi động lại quy trình apache và php-fpm của bạn sudo service apache2 restart Kiểm tra cài đặt của bạnĐể kiểm tra cài đặt máy chủ của bạn, bạn có thể chạy thử nghiệm Apache Bench và xem máy chủ của bạn hoạt động như thế nào trong MaxRequestWorkers = (Total RAM - Memory used for Linux, DB, etc.) / process size 4Mở 2 terminal và lệnh sau để kiểm tra 5000 yêu cầu với đồng thời 100 yêu cầu song song ab -n 5000 -c 100 Kiểm tra tải bằng băng ghế apacheCải thiện quy trình mô phỏng (do zzzplayer đề xuất)
Tôi hi vọng cái này giúp được. Gửi cho tôi một dòng, khi bạn có kinh nghiệm khác hoặc nghĩ rằng tôi có thể cải thiện công thức/tính toán của mình. Tôi cũng có thể tạo một giao diện web đơn giản để tính toán các cài đặt… Nhưng bây giờ tôi phải quay lại làm việc ;-) |