nginx 및 운영 체제 설정 최적화
nginx 설정
#user nobody;
#nginx , cpu , 。
worker_processes 8;
# cpu, 8 8 cpu, , cpu
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
# nginx , (ulimit -n) nginx , nginx , ulimit -n 。
worker_rlimit_nofile 102400;
#
error_log logs/error.log;
#nginx PID
pid logs/nginx.pid;
events {
# epoll I/O
use epoll;
# , nginx worker_processes*worker_connections
worker_connections 102400;
}
# load modules compiled as Dynamic Shared Object (DSO)
#
#dso {
# load ngx_http_fastcgi_module.so;
# load ngx_http_rewrite_module.so;
#}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
# , , 1k, 1k, 。 getconf PAGESIZE
client_header_buffer_size 4k;
client_max_body_size 8M;
client_body_buffer_size 128k;
# , ,max , ,inactive
open_file_cache max=102400 inactive=20s;
#
open_file_cache_valid 30s;
#open_file_cache inactive , , , , inactive ,
open_file_cache_min_uses 1;
#keepalive
keepalive_timeout 65;
tcp_nodelay on;
#
gzip on;
gzip_http_version 1.1;
gzip_vary on;
# 1k
gzip_min_length 1k;
# , , CPU
gzip_comp_level 2;
gzip_proxied any;
# content-type
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
# buffer
gzip_buffers 4 16k;
# Disable gzip for certain browsers.
gzip_disable “MSIE [1-6].(?!.*SV1)”;
#websocket
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';
server {
listen 80;
server_name *.abc.com;
charset UTF-8;
access_log /opt/nginx/logs/access.log access;
# jetty root
root /opt/jetty/webapps/root;
# /, 301 /A/
location = / {
return 301 /A/;
}
# /
location / {
root /opt/jetty/webapps/root/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# , 10
location ~ /\.(gif|jpg|png|js|css)$ {
root /opt/jetty/webapps/root/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
expires 10d;
}
# /A/websocket1.do websocket jetty
location = /A/websocket1.do {
proxy_pass http://127.0.0.1:8080/A/websocket1.do;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# /A/websocket2.do websocket jetty
location = /A/websocket2.do {
proxy_pass http://127.0.0.1:8080/A/websocket2.do;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# A , 10
location ~ /A/\.(gif|jpg|png|js|css)$ {
root /opt/jetty/webapps/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
expires 10d;
}
# /A jetty
location /A {
proxy_pass http://127.0.0.1:8080/A;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# jetty
location /download/ {
internal;
alias /somewhere/; # note the trailing slash
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# /A/view/
location = /A/view/ {
return 404;
}
#
error_page 403 /static/403.html;
error_page 404 /static/404.html;
error_page 500 503 504 /static/500.html;
error_page 502 /static/502.html;
}
}
이에 따라 시스템 매개 변 수 를 수정 했다. 다음 과 같다.
vim /etc/sysctl.conf
# Disable response to broadcasts.
# You don't want yourself becoming a Smurf amplifier.
net.ipv4.icmp_echo_ignore_broadcasts = 1
# enable route verification on all interfaces
net.ipv4.conf.all.rp_filter = 1
# enable ipV6 forwarding
#net.ipv6.conf.all.forwarding = 1
# increase the number of possible inotify(7) watches
fs.inotify.max_user_watches = 65536
# avoid deleting secondary IPs on deleting the primary IP
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.all.promote_secondaries = 1
#timewait , 180000
net.ipv4.tcp_max_tw_buckets = 6000
#
net.ipv4.ip_local_port_range = 1024 65000
# timewait
net.ipv4.tcp_tw_recycle = 1
# 。 TIME-WAIT sockets TCP
net.ipv4.tcp_tw_reuse = 1
# SYN Cookies, SYN , cookies
net.ipv4.tcp_syncookies = 1
#web listen backlog net.core.somaxconn 128, nginx NGX_LISTEN_BACKLOG 511,
net.core.somaxconn = 262144
# ,
net.core.netdev_max_backlog = 262144
# TCP 。 , 。 DoS , , ( )
net.ipv4.tcp_max_orphans = 262144
# 。 128M , 1024, 128
net.ipv4.tcp_max_syn_backlog = 262144
# 。 1Gbps 。 “ ” 。
net.ipv4.tcp_timestamps = 0
# , SYN SYN ACK。 。 SYN+ACK
net.ipv4.tcp_synack_retries = 1
# SYN
net.ipv4.tcp_syn_retries = 1
# , FIN-WAIT-2 。 , 。 60 。2.2 180 , , , WEB , ,FIN- WAIT-2 FIN-WAIT-1 , 1.5K ,
net.ipv4.tcp_fin_timeout = 1
# keepalive ,TCP keepalive 。 2
net.ipv4.tcp_keepalive_time = 30
또한 운영 체제 에서 열 수 있 는 최대 파일 수 를 늘 렸 습 니 다.
vim /etc/security/limits.conf
* hard nofile 102400
* soft nofile 102400
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.