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
Mã:
#!/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"
Mã:
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).