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).