Nginx 성능 최적화
리 눅 스 시스템 최적화
1. 불필요 한 서 비 스 를 닫 고 자신의 Linux 서버 에 배 치 된 프로젝트 수요 에 따라 불필요 한 서비스 나 프로 세 스 를 닫 습 니 다.
2. 디스크 쓰기 작업 을 최적화 합 니 다. Nginx 가 한 파일 에 접근 할 때마다 리 눅 스 시스템 은 그의 'Access', 즉 방문 시간 을 수정 하여 파일 이 수 정 된 시간 을 볼 때
stat
방식 으로 볼 수 있 습 니 다. 예 를 들 어:[root@iZ94sni08orZ conf]# stat nginx.conf
File: "nginx.conf"
Size: 2656 Blocks: 8 IO Block: 4096
Device: ca01h/51713d Inode: 660555 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1001/ UNKNOWN) Gid: ( 1001/ UNKNOWN)
Access: 2015-11-18 16:31:05.221629056 +0800
Modify: 2015-04-21 22:11:59.000000000 +0800
Change: 2015-11-18 10:30:10.421498579 +0800
[root@iZ94sni08orZ conf]#
접근 시간 이 표시 되 어 있 기 때문에 동시 다발 적 인 접근 시스템 에서 이 디스크 쓰기 작업 이 시스템 에 미 치 는 영향 이 매우 크기 때문에 이 기능 을 닫 아야 합 니 다.
/dev/sdb1 /dataext3 defaults 0 0
다음 설정 으로 변경:
/dev/sdb1 /dataext3 defaults,noatime,nodiratime 0 0
그리고 시스템 을 다시 시작 하여 효력 을 발생 시킨다.
시스템 을 다시 시작 하지 않 으 면 remount 옵션 을 사용 하여 다시 마 운 트 할 수 있 습 니 다.
-->mount -o defaults,noatime,nodiratime -o remount /dev/sdb1 /sdb
-->mount | grep sdb1
/dev/sdb1 on /sdb type ext3 (rw,noatime,nodiratime)
단독 마 운 트 된 파 티 션 이나 디스크 라면 명령 을 직접 실행 할 수 있 습 니 다.
-->mount -o defaults,noatime,nodiratime /dev/sdb1 /sdb
-->mount | grep sdb1
/dev/sdb1 on /sdb type ext3 (rw,noatime,nodiratime)
3. 자원 제한 Linux 를 최적화 하 는 명령 은 ulimit 입 니 다. 셸 프로그램의 자원 을 제어 하 는 데 사용 되 고 셸 시작 프로 세 스 가 사용 하 는 자원 에 사용 되 며 문법 은 다음 과 같 습 니 다.
ulimit [-aHS][-c <core >][-d < >][-f < >][-m < >][-n < >][-p < >][-s < >][-t <CPU >][-u < >][-v < >]
매개 변 수 는:
-a 。 -c <core > core , 。 -d < > , KB。 -f < > shell , 。 -H , 。 -m < > , KB。 -n < > 。 -p < > , 512 。 -s < > , KB。 -S 。 -t <CPU > CPU , 。 -u < > 。 -v < > , KB。
매개 변수의 기능 에 따라
ulimit -a
자원 의 제한 정 보 를 열거 할 수 있 습 니 다.[root@iZ94sni08orZ ~]# 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) 3870
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535
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) 3870
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@iZ94sni08orZ ~]#
위의 그림 은 제 CentOS 7.0 의 정보 입 니 다. 그리고 명령 을 사용 하여 시스템 을 Nginx 에 최적화 시 킵 니 다. 아래 명령 으로 - n 에 대응 하 는 자원 에 대해 무제 한 을 할 수 있 습 니 다. 즉, 시스템 이 지원 하 는 가장 큰 값 입 니 다.
ulimit -n unlimited
또는 ulimit -n
으로 수정 할 수 있 습 니 다.설정 파일 을 수정 하 는 방식 으로 도 수정 할 수 있 습 니 다.
vim /etc/security/limits.conf
이 파일 은 두 줄 만 있 고 나머지 는 주석 내용 입 니 다.
* soft nofile 65535
* hard nofile 65535
다음 으로 변경:
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
상술 한 수정 후 필요 한 요 리 를 다시 시작 해 야 할 뿐 효력 이 발생 한다.
4. 커 널 TCP 옵션 최적화
커 널 파 라 메 터 를 수정 하 십시오. 이 파일 은
/etc/sysctl.conf
에 있 습 니 다. 내용 설명 을 포함 하여 모두 알 수 있 습 니 다. 기본 내용 은:# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
# Controls the default maxmimum size of a mesage queue
kernel.msgmnb = 65536
# Controls the maximum size of a message, in bytes
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.conf.lo.arp_announce=2
대응 하 는 속성 을 다음 값 으로 설정 합 니 다. 수정 사항 도 있 고 없 는 것 도 추가 합 니 다.
net.ipv4.tcp_max_tw_buckets = 6000 # timewait , 180000
net.ipv4.ip_local_port_range = 1024 65000 # , 32768-61000
net.ipv4.tcp_tw_recycle = 1 # timewait , 0
net.ipv4.tcp_tw_reuse = 1 # , TIME-WAIT sockets TCP
net.ipv4.tcp_syncookies = 1 # SYN Cookies, , SYN , Cookies , 0
net.core_somaxconn = 262144 #
net.core_netdev_max_backlog = 262144 # , , ,
net.ipv4.tcp_max_orphans = 262144 # Linux ,
net.ipv4.tcp_max_syn_backlog = 262144 #
net.ipv4.tcp_timestamps = 0 # , 0
net.ipv4.tcp_synack_retries = 1 # SYN , 5, TCP , SYN ACK SYN, wile , SYN 。 DDos
net.ipv4.tcp_syn_retries = 1 # SYN
net.ipv4.tcp_fin_timeout = 1 # FIN-WAIT-2
net.ipv4.tcp_keepalive_time = 30 # , TCP keepalive
Nginx 서버 최적화
1. 방문 로 그 를 닫 고 필요 에 따라 해당 모듈 의 로그 기록 을 합 니 다. 예 를 들 어 http, server, location 등 단독 구간 에서 로그 기록 을 설정 합 니 다.
2. Nginx 서버 설정 최적화
server 모듈 설정 파일 에 설정:
worker_connections 65535
keepalive_timeout 60
client_header_buffer_size 8k
worker_rlimit_nofile 65535
물론 Nginx 에 대한 최적화 도 많 습 니 다. 위 에 간단 한 학습 기록 이 있 으 니 여러분 께 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.