Đây là của tôi nginx.conf
(Tôi đã cập nhật cấu hình để đảm bảo rằng không có PHP liên quan hoặc bất kỳ nút thắt nào khác):
user nginx;
worker_processes 4;
worker_rlimit_nofile 10240;
pid /var/run/nginx.pid;
events
{
worker_connections 1024;
}
http
{
include /etc/nginx/mime.types;
error_log /var/www/log/nginx_errors.log warn;
port_in_redirect off;
server_tokens off;
sendfile on;
gzip on;
client_max_body_size 200M;
map $scheme $php_https { default off; https on; }
index index.php;
client_body_timeout 60;
client_header_timeout 60;
keepalive_timeout 60 60;
send_timeout 60;
server
{
server_name dev.anuary.com;
root "/var/www/virtualhosts/dev.anuary.com";
}
}
Tôi đang sử dụng http://blitz.io/play để kiểm tra máy chủ của mình (tôi đã mua gói 10 000 kết nối đồng thời). Trong 30 giây chạy, tôi nhận được 964
lượt truy cập và 5,587 timeouts
. Thời gian chờ đầu tiên xảy ra ở 40,77 giây trong thử nghiệm khi số người dùng đồng thời ở mức 200.
Trong quá trình thử nghiệm, tải máy chủ là ( top
đầu ra):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 20225 nginx 20 0 48140 6248 1672 S 16.0 0.0 0:21.68 nginx
1 root 20 0 19112 1444 1180 S 0.0 0.0 0:02.37 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.03 migration/0
Vì vậy, nó không phải là vấn đề tài nguyên máy chủ. Sau đó là gì?
CẬP NHẬT 2011 12 09 GMT 17:36.
Cho đến nay tôi đã thực hiện các thay đổi sau để đảm bảo rằng nút cổ chai không phải là TCP / IP. Đã thêm vào /etc/sysctl.conf
:
# These ensure that TIME_WAIT ports either get reused or closed fast.
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_recycle = 1
# TCP memory
net.core.rmem_max = 16777216
net.core.rmem_default = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
Một số thông tin gỡ lỗi khác:
[root@server node]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 126767
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
NB worker_rlimit_nofile
Được đặt thành 10240
cấu hình nginx.
CẬP NHẬT 2011 12 09 GMT 19:02.
Có vẻ như tôi càng thay đổi nhiều thì càng tệ, nhưng đây là tập tin cấu hình mới.
user nginx;
worker_processes 4;
worker_rlimit_nofile 10240;
pid /var/run/nginx.pid;
events
{
worker_connections 2048;
#1,353 hits, 2,751 timeouts, 72 errors - Bummer. Try again?
#1,408 hits, 2,727 timeouts - Maybe you should increase the timeout?
}
http
{
include /etc/nginx/mime.types;
error_log /var/www/log/nginx_errors.log warn;
# http://blog.martinfjordvald.com/2011/04/optimizing-nginx-for-high-traffic-loads/
access_log off;
open_file_cache max=1000;
open_file_cache_valid 30s;
client_body_buffer_size 10M;
client_max_body_size 200M;
proxy_buffers 256 4k;
fastcgi_buffers 256 4k;
keepalive_timeout 15 15;
client_body_timeout 60;
client_header_timeout 60;
send_timeout 60;
port_in_redirect off;
server_tokens off;
sendfile on;
gzip on;
gzip_buffers 256 4k;
gzip_comp_level 5;
gzip_disable "msie6";
map $scheme $php_https { default off; https on; }
index index.php;
server
{
server_name ~^www\.(?P<domain>.+);
rewrite ^ $scheme://$domain$request_uri? permanent;
}
include /etc/nginx/conf.d/virtual.conf;
}
CẬP NHẬT 2011 12 11 GMT 20:11.
Đây là đầu ra của netstat -ntla
trong quá trình thử nghiệm.
https://gist.github.com/d74750cceba4d08668ea
CẬP NHẬT 2011 12 12 GMT 10:54.
Chỉ cần làm rõ, iptables
(tường lửa) tắt trong khi thử nghiệm.
CẬP NHẬT 2011 12 12 GMT 22:47.
Đây là sysctl -p | grep mem
bãi rác.
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 8388608 8388608 8388608
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 65536 8388608
net.ipv4.route.flush = 1
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_max = 16777216
net.core.rmem_default = 16777216
net.core.wmem_max = 8388608
net.core.wmem_default = 65536
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
CẬP NHẬT 2011 12 12 GMT 22:49
Tôi đang sử dụng blitz.io
để chạy tất cả các bài kiểm tra. URL tôi đang kiểm tra là http://dev.anftime.com/test.txt , sử dụng lệnh sau:--region ireland --pattern 200-250:30 -T 1000 http://dev.anuary.com/test.txt
CẬP NHẬT 2011 12 13 GMT 13:33
nginx
giới hạn người dùng (đặt trong /etc/security/limits.conf
).
nginx hard nofile 40000
nginx soft nofile 40000
worker_processes
lên 4
.