Chào mọi người, hôm nay mình sẽ chia sẻ với mọi người cách mà mình hay
dùng để tính toán số lượng MaxClient khi config apache. Bên dưới mình
cũng có code sẵn 1 script nho nhỏ để tính toán con số này, tuy nhiên chỉ
mang tính tương đối thôi nhé.
Lưu ý: Giá trị tính toán được chỉ mang tính tương đối, tùy theo thực tế, mọi người tăng giảm cho phù hợp
Công thức mình sử dụng như sau:
MaxClient = Tổng số RAM server còn trống sau khi đã chạy đầy đủ hết các
dịch vụ (trừ dịch vụ httpd) / số RAM trung bình 1 process httpd sử dụng
#!/bin/bash # Script compute MaxClient for Apache # Author: Arch # Date: 06/12/2013 # Get total MEM TOTAL_MEM=$(head -1 /proc/meminfo | awk '{print $2}') # Get total Memory is being used TOTAL_MEM_USED=$(free | grep 'buffers/cache' | awk '{print $3}') # Get average memory of 1 process httpd count=0 httpd_mem=0 for process_mem in `ps -ylC httpd --sort:rss | awk '{print $8}' | grep -v RSS` do let "count+=1" let "httpd_mem+=$process_mem" done # Average memory per process HTTPD_AVG_MEM=$(( $httpd_mem / $count )) # Get total memory used for httpd: HTTPD_TOTAL_MEM=$(( $TOTAL_MEM - $TOTAL_MEM_USED + $httpd_mem )) MAX_CLIENT=$(( $HTTPD_TOTAL_MEM / $HTTPD_AVG_MEM )) # Final result echo -e "Total RAM in this server:\t\t $TOTAL_MEM KB" echo -e "Total RAM is being used:\t\t $TOTAL_MEM_USED KB" echo -e "Total RAM will be used for httpd:\t $HTTPD_TOTAL_MEM KB" echo -e "Average RAM per process httpd:\t\t $HTTPD_AVG_MEM KB" echo -e "Recommend MaxClients value:\t\t $MAX_CLIENT"
Total RAM in this server: 10240000 KB Total RAM is being used: 4837212 KB Total RAM will be used for httpd: 5495916 KB Average RAM per process httpd: 10347 KB Recommend MaxClients value: 531
- Server có 10GB RAM
- Tổng số RAM đang dùng (lúc này dịch vụ apache vẫn đang chạy, số RAM này tính luôn số RAM mà apache đang dùng): 4,8GB
- Số RAM thực sự còn trống mà mình dự định sẽ dùng hết cho apache sau khi trừ các dịch vụ khác: 5,4GB
- Số RAM trung bình của 1 process apache: 10MB
- Con số Maxclients gợi ý: vào khoảng 531 client (để an toàn thì nên chọn thấp hơn con số này 1 chút).