nginx+linux最適化、同時パフォーマンスの向上
1512 ワード
カーネルの最適化:
vi/etc/sysctl.conf
以下を追加
注意:画像が多すぎる場合は、同時接続数limit_connは少し高くします.
vi/etc/sysctl.conf
以下を追加
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000
nginxを修正する.conf worker_processes 8;
worker_rlimit_nofile 102400;
use epoll;
use epoll;イベントに入れる必要があるworker_connections 102400;
httpモジュールに追加:client_header_buffer_size 4k;
open_file_cache max=102400 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn perip 20;
limit_req_zone $binary_remote_addr zone=perreq:10m rate=5r/s;
limit_req zone=perreq burst=10;
limitの数行はCC攻撃を防ぎ、主に20同時接続を制限し、毎秒5回の要求を制限し、突発要求は10に制限されている.自分のニーズに合わせて調整する.注意:画像が多すぎる場合は、同時接続数limit_connは少し高くします.