ฉันใช้ Apache2 บน Debian 11 VPSฉันได้เขียน API และฉันพยายามเน้นการทดสอบผ่านเซิร์ฟเวอร์ภายนอกโดยใช้ ApacheBench
เมื่อเปิดใช้งาน mpm_prefork และปิดใช้งาน php8.0-fpm เวลาตอบสนองเปอร์เซ็นไทล์ที่ 95 จะอยู่ที่ประมาณ 30 มิลลิวินาที ผลลัพธ์จะเป็นดังนี้:
ซอฟต์แวร์เซิร์ฟเวอร์: Apache/2.4.52
ชื่อโฮสต์เซิร์ฟเวอร์: XXX.XXX.com
พอร์ตเซิร์ฟเวอร์: 443
โปรโตคอล SSL/TLS: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,4096,256
คีย์อุณหภูมิเซิร์ฟเวอร์: X25519 253 บิต
ชื่อเซิร์ฟเวอร์ TLS: XXX.XXX.com
เส้นทางเอกสาร: /v1/module
ความยาวเอกสาร: 370 ไบต์
ระดับการทำงานพร้อมกัน: 100
เวลาที่ใช้ในการทดสอบ: 2.783 วินาที
คำขอที่สมบูรณ์: 1,000
คำขอล้มเหลว: 0
คำขอ Keep-Alive: 1,000
การถ่ายโอนทั้งหมด: 845001 ไบต์
HTML ที่ถ่ายโอน: 370,000 ไบต์
คำขอต่อวินาที: 359.28 [#/วินาที] (ค่าเฉลี่ย)
เวลาต่อคำขอ: 278.336 [ms] (ค่าเฉลี่ย)
เวลาต่อคำขอ: 2.783 [ms] (หมายถึง ในทุกคำขอที่เกิดขึ้นพร้อมกัน)
อัตราการถ่ายโอน: ได้รับ 296.48 [Kbytes/วินาที]
เวลาเชื่อมต่อ (มิลลิวินาที)
ค่าเฉลี่ยต่ำสุด[+/-sd] ค่ามัธยฐานสูงสุด
ต่อ: 0 14 157.2 0 2295
กำลังดำเนินการ: 17 26 3.3 25 44
กำลังรอ: 17 26 3.3 25 44
รวม: 17 40 157.8 25 2330
เปอร์เซ็นต์ของคำขอที่ให้บริการภายในเวลาที่กำหนด (มิลลิวินาที)
50% 25
66% 26
75% 27
80% 28
90% 30
95% 33
98% 41
99% 282
100% 2330 (คำขอที่ยาวที่สุด)
เมื่อ mpm_prefork ยังคงเปิดใช้งานอยู่ แต่เปลี่ยนไปใช้ php8.0-fpm เวลาตอบสนองจะไร้สาระ ผลลัพธ์จะเป็นดังนี้:
ซอฟต์แวร์เซิร์ฟเวอร์: Apache/2.4.52
ชื่อโฮสต์เซิร์ฟเวอร์: XXX.XXX.com
พอร์ตเซิร์ฟเวอร์: 443
โปรโตคอล SSL/TLS: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,4096,256
คีย์อุณหภูมิเซิร์ฟเวอร์: X25519 253 บิต
ชื่อเซิร์ฟเวอร์ TLS: XXX.XXX.com
เส้นทางเอกสาร: /v1/module
ความยาวเอกสาร: 370 ไบต์
ระดับการทำงานพร้อมกัน: 100
เวลาที่ใช้ในการทดสอบ: 12.595 วินาที
คำขอที่สมบูรณ์: 1,000
คำขอล้มเหลว: 0
คำขอ Keep-Alive: 0
การถ่ายโอนทั้งหมด: 788,000 ไบต์
HTML ที่ถ่ายโอน: 370,000 ไบต์
คำขอต่อวินาที: 79.39 [#/วินาที] (ค่าเฉลี่ย)
เวลาต่อคำขอ: 1259.549 [ms] (ค่าเฉลี่ย)
เวลาต่อคำขอ: 12.595 [ms] (หมายถึง ในทุกคำขอที่เกิดขึ้นพร้อมกัน)
อัตราการถ่ายโอน: ได้รับ 61.10 [Kbytes/วินาที]
เวลาเชื่อมต่อ (มิลลิวินาที)
ค่าเฉลี่ยต่ำสุด[+/-sd] ค่ามัธยฐานสูงสุด
ต่อ: 91 1152 619.3 1108 4744
กำลังดำเนินการ: 22 46 39.0 32 850
รอ: 21 43 27.4 31 491
รวม: 121 1198 623.4 1146 4784
เปอร์เซ็นต์ของคำขอที่ให้บริการภายในเวลาที่กำหนด (มิลลิวินาที)
50% 1146
66% 1298
75% 1668
80% 1796
90% 2535
95% 2053
98% 2190
99% 3017
100% 4784 (คำขอที่ยาวที่สุด)
ฉันใช้ Apache/2.4.52 (Debian) และ PHP 8.0.14 (cli) เป้าหมายคือการเริ่มใช้ mpm_event แทน mpm_prefork เพื่อเปิดใช้งานการเชื่อมต่อพร้อมกันจำนวนมากสำหรับ API ของฉัน ฉันเริ่มทำสิ่งนี้ด้วยเวลาโหลดแบบนั้นไม่ได้
ฉันจะเปลี่ยนเป็น php-fpm โดยไม่เสียเวลาโหลดได้อย่างไร
การตั้งค่า php-fpm ของฉันมีดังนี้:
pm.max_children = 844
pm.start_servers = 16
pm.min_spare_servers = 8
pm.max_spare_servers = 16
pm.max_requests = 1,000