>운영 및 유지보수 >엔진스 >nginx 프롬프트 500 내부 서버 오류를 해결하는 방법

nginx 프롬프트 500 내부 서버 오류를 해결하는 방법

WBOY
WBOY앞으로
2023-05-27 23:27:363056검색

동시 연결이 많은 경우 nginx는 Apache 서버의 좋은 대안입니다. nginx는 레이어 7 로드 밸런싱 서버로도 사용할 수 있습니다. 테스트 결과에 따르면 nginx 0.6.31 + php 5.2.6(fastcgi)은 30,000개 이상의 동시 연결을 견딜 수 있으며 이는 동일한 환경에서 Apache의 10배에 해당합니다.
하지만 많은 사람들이 nginx를 사용할 때 500 오류를 겪게 됩니다. 내 사용법에 따르면, 그 이유 중 가장 큰 부분은 파일 열기 핸들이 너무 작기 때문입니다.
Linux에서는 이 명령을 사용하여 프로세스가 연 파일 핸들을 늘립니다.
ulimit -shn 51200
기본적으로 1000만 사용됩니다. 링크 수가 적을 경우에는 표시되지 않습니다. 이 처리 방법을 사용하면 500 오류 발생을 효과적으로 방지할 수 있습니다.
오늘 웹사이트를 방문했을 때 가끔 500 내부 서버 오류 오류 페이지가 나타났습니다.
관련 정보를 확인한 결과 과도한 액세스와 제한된 시스템 커널 프로세스로 인해 발생한 것으로 생각되었습니다.
$ ulimit. -n
11095
프로그램 제한은 11095개의 파일만 열 수 있습니다. ulimit 명령은 현재 사용자가 한 프로세스에서 가질 수 있는 파일 설명자 수를 설정하는 것입니다.
시뮬레이트된 동시성이 너무 많은 것 같습니다. nginx.conf에서 동시성 설정 수를 조정하려면 (내 구성 호스트의 메모리는 2g이고 CPU는 2.8g입니다.)

코드 복사 코드는 다음과 같습니다:

vi /etc/nginx/ nginx.confconevents {


worker_connections 1024;
}


코드 코드의 코드는 다음과 같습니다.

events {

worker_connections 10240;

}} 위의 문제는 여전히 발생합니다. [루트 사용. @qimutian nginx]# cat /proc/sys/fs/file-max

8192
파일 시스템이 가장 큽니다 열린 파일 수
[root@qimutian nginx]# ulimit -n
1024
프로그램 제한은 열 수만 있습니다 1024개 파일
[root@qimutian nginx]# ulimit -n 8192를 사용하여 조정
하거나 시작 파일 /etc/rc.d/rc.local 끝에 추가에서 열린 파일 수를 영구적으로 조정합니다(fs. /etc/sysctl.conf 끝의 file-max=8192)
ulimit -n 8192
centos5 파일 열기 수를 조정하세요
ulimit -a를 사용하세요. 스트레스 중에는 열린 파일이 기본적으로 1024를 초과할 수 없는 것으로 나타났습니다. 어제 테스트해보니 500에러가 발생했습니다. 자세한 내용을 확인해주세요.
nginx에서 내부서버에러가 발생했습니다. 아침에 일어나서 확인해 보니
방법1(영구조정)입니다.
vi /etc/security/limits.conf
파일 끝에 추가:
* Soft nofile 8192
* hard nofile 20480
동시에 vi / 끝에
fs.file-max=8192를 추가하세요. etc/sysctl.conf
Restart, ulimit -n을 사용하여 확인한 번호는 이미 8192입니다
방법 2(임시 사용)
ulimit -n 8192를 터미널에 직접 입력하고 Enter 키를 누르면 OK

500 내부 서버 오류 Error 보충:

1. 하드 디스크 공간이 가득 찼습니다. df -k를 사용하여 하드 디스크 공간이 가득 찼는지 확인하세요. 하드 드라이브 공간을 정리하면 500개 오류를 해결할 수 있습니다. nginx에서 액세스 로그가 활성화된 경우 필요하지 않을 때는 액세스 로그를 닫는 것이 가장 좋습니다. 액세스 로그는 하드 디스크 공간을 많이 차지합니다. 2. nginx 구성 파일 오류
이는 문법 오류를 의미하지 않습니다. nginx 구성 파일에 문법 오류가 있는 경우 시작 시 메시지가 표시됩니다. 다시 쓰기를 구성할 때 일부 규칙이 제대로 처리되지 않으면 500 오류가 발생할 수 있습니다. 다시 쓰기 규칙을 주의 깊게 확인하세요. 구성 파일의 일부 변수가 잘못 설정되면 값이 없는 변수를 참조하는 등 500 오류가 발생할 수도 있습니다.
3. 위의 문제 중 어느 것도 존재하지 않으면 시뮬레이션된 동시성 수가 너무 많은 것일 수 있습니다. 해결 방법은 다음과 같습니다.
1 /etc/security를 ​​엽니다. /limits.conf 파일에 두 문장 추가


코드 복사 코드는 다음과 같습니다.

* Soft nofile 65535

* hard nofile 65535

2 /etc/nginx/nginx.conf를 엽니다

worker_processes 아래에 한 줄 추가

코드 복사 코드는 다음과 같습니다.

worker_rlimit_nofile 65535;

3 nginx를 다시 시작하고 설정을 다시 로드합니다.

코드 복사 코드는 다음과 같습니다.


kill -9 `ps -ef | grep php | grep -v grep | awk '{print $2}'`

/ usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -c 100 -u www-data -f /usr/bin/php-cgi

killall -hup nginx

다시 시작한 다음 nginx 오류 로그를 살펴보세요. 또한 No 500 오류가 발견되었습니다.
4. 데이터베이스 문제일 수 있습니다. nginx 로그나 php 로그에서 아무런 문제도 발견하지 못했습니다. 결국 수정 후 문제가 해결되었습니다.

위 내용은 nginx 프롬프트 500 내부 서버 오류를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제