Tôi đang chạy Apache2 trên VPS Debian 11.Tôi đã viết một API và tôi đang cố gắng kiểm tra nó thông qua một máy chủ bên ngoài bằng ApacheBench.
Khi bật mpm_prefork và tắt php8.0-fpm, thời gian phản hồi phần trăm thứ 95 là khoảng 30 mili giây. Đầu ra như sau:
Phần mềm máy chủ: Apache/2.4.52
Tên máy chủ: XXX.XXX.com
Cổng máy chủ: 443
Giao thức SSL/TLS: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,4096,256
Khóa tạm thời máy chủ: X25519 253 bit
Tên máy chủ TLS: XXX.XXX.com
Đường dẫn tài liệu: /v1/module
Độ dài tài liệu: 370 byte
Mức độ đồng thời: 100
Thời gian thực hiện các bài kiểm tra: 2,783 giây
Hoàn thành yêu cầu: 1000
Yêu cầu không thành công: 0
Yêu cầu Keep-Alive: 1000
Tổng số đã truyền: 845001 byte
HTML được truyền: 370000 byte
Yêu cầu mỗi giây: 359,28 [#/giây] (trung bình)
Thời gian cho mỗi yêu cầu: 278.336 [ms] (trung bình)
Thời gian cho mỗi yêu cầu: 2,783 [ms] (có nghĩa là trên tất cả các yêu cầu đồng thời)
Tốc độ truyền: Đã nhận 296,48 [Kbyte/giây]
Thời gian kết nối (ms)
trung bình tối thiểu[+/-sd] trung bình tối đa
Kết nối: 0 14 157.2 0 2295
Xử lý: 17 26 3.3 25 44
Đang chờ: 17 26 3.3 25 44
Tổng cộng: 17 40 157,8 25 2330
Phần trăm yêu cầu được phục vụ trong một thời gian nhất định (ms)
50% 25
66% 26
75% 27
80% 28
90% 30
95% 33
98% 41
99% 282
100% 2330 (yêu cầu dài nhất)
Với mpm_prefork vẫn được bật nhưng chuyển sang php8.0-fpm, thời gian phản hồi trở nên vô lý. Đầu ra như sau:
Phần mềm máy chủ: Apache/2.4.52
Tên máy chủ: XXX.XXX.com
Cổng máy chủ: 443
Giao thức SSL/TLS: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,4096,256
Khóa tạm thời máy chủ: X25519 253 bit
Tên máy chủ TLS: XXX.XXX.com
Đường dẫn tài liệu: /v1/module
Độ dài tài liệu: 370 byte
Mức độ đồng thời: 100
Thời gian thực hiện các bài kiểm tra: 12,595 giây
Hoàn thành yêu cầu: 1000
Yêu cầu không thành công: 0
Yêu cầu Keep-Alive: 0
Tổng số đã truyền: 788000 byte
HTML được truyền: 370000 byte
Yêu cầu mỗi giây: 79,39 [#/giây] (trung bình)
Thời gian cho mỗi yêu cầu: 1259,549 [ms] (trung bình)
Thời gian cho mỗi yêu cầu: 12,595 [ms] (có nghĩa là trên tất cả các yêu cầu đồng thời)
Tốc độ truyền: Đã nhận 61,10 [Kbyte/giây]
Thời gian kết nối (ms)
trung bình tối thiểu[+/-sd] trung bình tối đa
Kết nối: 91 1152 619.3 1108 4744
Xử lý: 22 46 39.0 32 850
Đang chờ: 21 43 27,4 31 491
Tổng: 121 1198 623,4 1146 4784
Phần trăm yêu cầu được phục vụ trong một thời gian nhất định (ms)
50% 1146
66% 1298
75% 1668
80% 1796
90% 1992
95% 2053
98% 2190
99% 3017
100% 4784 (yêu cầu dài nhất)
Tôi đang chạy Apache/2.4.52 (Debian) và PHP 8.0.14 (cli). Mục tiêu là bắt đầu sử dụng mpm_event thay vì mpm_prefork, để kích hoạt nhiều kết nối đồng thời cho API của tôi. Tôi không thể bắt đầu làm điều này với thời gian tải như vậy.
Làm cách nào tôi có thể chuyển sang php-fpm mà không làm hỏng thời gian tải của mình?
Cài đặt php-fpm của tôi như sau:
pm.max_children = 844
pm.start_servers = 16
pm.min_spare_servers = 8
pm.max_spare_servers = 16
pm.max_requests = 1000