> 백엔드 개발 > PHP 튜토리얼 > nginx 서버 시스템 최적화

nginx 서버 시스템 최적화

WBOY
풀어 주다: 2016-08-08 09:32:57
원래의
997명이 탐색했습니다.

1 Linux 기본 코어 파일 크기는 0입니다.

코어 파일이란 무엇입니까? 프로그램이 충돌하면 프로세스의 저장 이미지가 프로세스의 현재 작업 디렉터리에 있는 코어 파일에 복사됩니다. 코어 파일은 주로 디버깅에 사용되는 메모리 이미지(디버깅 정보 포함)입니다. 코어 파일은 바이너리 파일이므로 프로그램 충돌 시 메모리 이미지를 분석하려면 해당 도구를 사용해야 합니다.

시스템 기본 코어 파일 크기는 0이므로 생성되지 않습니다. ulimit 명령을 사용하여 코어 파일의 크기를 보고 수정할 수 있습니다.

$ulimit -c

0

$ ulimit -c 1000

$ulimit-c

1000

-c는 코어 파일 크기를 수정하도록 지정하고, 1000은 코어 파일 크기를 지정합니다. 다음과 같이 코어 파일의 크기에 제한을 두지 않을 수도 있습니다.

# ulimit -c 무제한

#ulimit -c

제한 없는

변경 사항을 영구적으로 적용하려면 구성 파일을 수정해야 합니다.

Vim /etc/profile에서:

ulimit -S -c 0 > /dev/null 2>&1

다음으로 수정

ulimit -S -c 1000 > /dev/null 2>&1

참조: http://hi.baidu.com/jrckkyy/blog/item/2562320a5bdbc534b1351d95.html

2 Linux 열린 파일 및 최대 사용자 프로세스의 기본값은 1024입니다.

#ulimit -n

1024

#ulimit -u

1024

문제 설명: 설명 서버는 동시에 1024개의 파일만 열 수 있도록 허용하고 1024개의 사용자 프로세스를 처리합니다.

현재 시스템의 모든 제한 값을 보려면 ulimit -a를 사용하고, 현재 열려 있는 최대 파일 수를 보려면 ulimit -n을 사용하십시오.

새로 설치된 Linux에는 기본적으로 1024만 있습니다. 로드가 많은 서버로 사용하면 열려 있는 파일이 너무 많습니다. 따라서 더 크게 만들어야 합니다.

해결책:

즉시 수정하려면 ulimit –n 65535를 사용하십시오. 그러나 다시 시작한 후에는 유효하지 않습니다. (ulimit -SHn 65535는 ulimit -n 65535와 동일합니다. -S는 소프트를 나타내고 -H는 하드를 나타냅니다.)

세 가지 수정 방법이 있습니다:

1. /etc/rc.local에 ulimit -SHn 65535
줄을 추가합니다. 2. /etc/profile에 ulimit -SHn 65535
줄을 추가합니다. 3. /etc/security/limits.conf 끝에 다음을 추가합니다.

*소프트 노파일 65535
* 하드노파일 65535
*소프트 nproc 65535
*하드 nproc 65535

구체적으로 어떤 방법을 사용해야 할까요? 첫 번째 방법은 CentOS에 효과가 없고, 세 번째 방법은 효과가 있으며, 두 번째 방법은 Debian에 효과가 있습니다.

# ulimit -n

65535

# ulimit -u

65535

참고: ulimit 명령 자체에는 소프트 및 하드 설정이 있습니다. 하드의 경우 -H를 추가하고 소프트의 경우 -S를 추가합니다.

소프트 리미트는 현재 시스템에 적용되는 설정값을 의미합니다. 하드 제한 값은 일반 사용자가 낮출 수 있습니다. 그러나 늘릴 수는 없습니다. 소프트 제한은 하드 제한보다 높게 설정할 수 없습니다. 루트 사용자만 하드 제한 값을 늘릴 수 있습니다.

3 TIME_WAIT 상태의 연결이 많은 것으로 확인됨


문제 설명: time_wait 상태의 연결이 많이 발견되었으며 때로는 7000개를 초과하기도 했습니다.

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(상태의 키) 인쇄 키,"t",state[key]}'

더 많은 time_wait 연결 찾기

netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

DB서버의 mysql과 memcache가 해제되지 않은 것으로 확인되었습니다.

해결 방법: 많은 수의 TCP 연결을 사용하는 응용 프로그램의 경우 /etc/sysctl.conf의 매개 변수도 그에 따라 최적화해야 합니다.

정력 /etc/sysctl.conf

파일을 편집하고 다음 콘텐츠를 추가합니다.

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

그런 다음 /sbin/sysctl -p를 실행하여 매개변수를 적용하십시오.

최적화 후:

다수의 TIME_WAIT가 더 이상 존재하지 않고, mysql 프로세스의 점유율이 급격히 떨어지는 것으로 나타났습니다.

위에서는 nginx 서버 시스템 최적화에 대한 내용을 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿