ในช่วงสองวันที่ผ่านมา ฉันได้สร้างชุดเซิร์ฟเวอร์ Apache แต่ละเซิร์ฟเวอร์มีหน่วยความจำ 4G และใช้โหมด prefork จำนวนการเชื่อมต่อที่ตั้งค่าไว้ตอนเริ่มต้นมีน้อยเกินไปและใช้เวลานานในการตอบสนองต่อคำขอของผู้ใช้ในภายหลัง ฉันแก้ไขไฟล์การกำหนดค่า Apache 2.0.59 httpd.conf:
อ้าง
#พรีฟอร์ค MPM
# StartServers: จำนวนกระบวนการเซิร์ฟเวอร์ที่จะเริ่มต้น
# MinSpareServers: จำนวนกระบวนการเซิร์ฟเวอร์ขั้นต่ำที่เก็บไว้สำรอง
# MaxSpareServers: จำนวนกระบวนการเซิร์ฟเวอร์สูงสุดที่เก็บไว้สำรอง
# MaxClients: จำนวนสูงสุดของกระบวนการเซิร์ฟเวอร์ที่อนุญาตให้เริ่มต้นได้
# MaxRequestsPerChild: จำนวนคำขอสูงสุดที่กระบวนการเซิร์ฟเวอร์ให้บริการ
เริ่มเซิร์ฟเวอร์ 10
เซิร์ฟเวอร์ขั้นต่ำ 10
MaxSpareServers15
เซิร์ฟเวอร์ลิมิต 2000
แม็กซ์ไคลเอนท์ 2000
MaxRequestsPerChild 10,000
ตรวจสอบจำนวนกระบวนการ httpd (นั่นคือ จำนวนคำขอพร้อมกันที่ Apache สามารถจัดการในโหมด prefork):
คำสั่งลินุกซ์:
อ้าง
PS -ef |. grep httpd |. wc -l
ตัวอย่างผลลัพธ์ที่ส่งคืน:
1388
บ่งชี้ว่า Apache สามารถจัดการคำขอพร้อมกันได้ 1388 รายการ Apache สามารถปรับค่านี้ได้โดยอัตโนมัติตามโหลด
ตรวจสอบจำนวนคำขอพร้อมกันของ Apache และสถานะการเชื่อมต่อ TCP:
คำสั่งลินุกซ์:
อ้าง
netstat -n |. awk '/^tcp/ {++S[$NF]} END {สำหรับ (ใน S) พิมพ์ a, S[a]}'
(คำกล่าวนี้มาจาก ฉันได้รับจากคุณ Wang ผู้อำนวยการด้านเทคนิคฝ่ายธุรกิจ Sina Interactive Community ซึ่งดีมาก)
ตัวอย่างผลลัพธ์ที่ส่งคืน:
สุดท้าย_ACK 5
SYN_RECV 30
ก่อตั้งเมื่อปี ค.ศ. 1597
FIN_รอ1 51
FIN_รอ2 504
TIME_รอ 1,057
SYN_RECV ระบุจำนวนคำขอที่กำลังรอการประมวลผล ESTABLISHED ระบุสถานะการส่งข้อมูลปกติ TIME_WAIT ระบุจำนวนคำขอที่ได้รับการประมวลผลและกำลังรอให้การหมดเวลาสิ้นสุดลง
ในส่วนของการเปลี่ยนแปลงสถานะ TCP จะเห็นได้ชัดเจนจากรูปต่อไปนี้
สถานะ: รายละเอียดปิดแล้ว: ไม่มีการเชื่อมต่อที่ใช้งานอยู่หรืออยู่ระหว่างดำเนินการ ฟัง: เซิร์ฟเวอร์กำลังรอสายเรียกเข้า SYN_RECV: คำขอเชื่อมต่อมาถึงแล้ว กำลังรอการยืนยัน SYN_SENT: แอปพลิเคชันเริ่มต้นแล้ว กำลังเปิดการเชื่อมต่อ ESTABLISHED: สถานะการถ่ายโอนข้อมูลปกติ FIN_WAIT1: แอปพลิเคชันแจ้งว่าเสร็จสมบูรณ์ FIN_WAIT2: อีกฝ่ายตกลงที่จะปล่อย ITMED_WAIT: รอให้แพ็กเก็ตทั้งหมดตาย ปิด: ทั้งสองฝ่ายพยายามปิดพร้อมกัน TIME_WAIT: อีกด้านหนึ่งได้เริ่มต้นการเปิดตัว LAST_ACK: รอให้แพ็กเก็ตทั้งหมดตาย