2013-10-16 3 views
2

갑자기 서버가 작동을 멈췄을 때 모든 것이 원활하게 실행되고있었습니다. 내가 Nginx에 빠르게 CGI504 게이트웨이 시간 제한 - 업스트림 시간 초과

과 Linode을 사용하고 이 내 로그 파일입니다

상류 시간 초과 (110 : 연결 시간이 초과) 동안 상류 클라이언트에서 응답 헤더 읽기 : 76.66.174.147 서버를 : iskacanada.com 요청 : "GET/HTTP/1.1"상류 "FastCGI를 : //127.0.0.1 : 9000", 호스트 : "www.iskacanada.com"

location ~ \.php$ { 
    include  fastcgi_params; 
    fastcgi_read_timeout 120; 
    fastcgi_pass localhost:9000; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
} 

내가 mysql을 다시 시작하려면 그것은 말합니다 :

sudo service mysql restart sto p : 알 수없는 인스턴스 : 시작 : 작업을 시작하지 못했습니다.

무슨 일이 벌어지고 있는지 알고 싶습니다. PHP가 여전히 실행중인 경우

+0

[웹 마스터] (http://webmasters.stackexchange.com/) –

답변

7

여기에 내가했던 방법입니다

로그 파일을 확인하시기 바랍니다 우분투 12.04, Nginx에와 PHP5-FMP

  1. 를 사용! 로그 파일은 친구입니다. 504 게이트웨이 문제는 내 서버가 웹 사이트와 제대로 통신하지 못한다는 것을 의미합니다. 그래서 제 경우에는 Nginx와 php-fpm이 요청을 관리하고있었습니다.

    /var/log/nginx/error.log와하는 error.log에 /var/log/php5-fpm.log

:

recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 76.66.174.147, server: xxxxxxx.com, request: "GET /wp-admin/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.xxxxxxx.com" 
나는이 개 로그 파일을 확인했다 PHP5-fpm.log에서

:

주소 '127.0.0.1:9000'에 대한 청취 소켓을 바인딩 할 수 없습니다 : 주소를 이미 사용 (98)

그래서 figu php5-fpm 프로세스를 타이핑하여 확인해야 할 필요가 있음을 알립니다.

netstat | grep 9000 
tcp  0  0 localhost.localdom:9000 localhost.localdo:58424 SYN_RECV 
tcp  913  0 localhost.localdom:9000 localhost.localdo:57917 CLOSE_WAIT 
tcp  857  0 localhost.localdom:9000 localhost.localdo:58032 CLOSE_WAIT 
tcp  1633  0 localhost.localdom:9000 localhost.localdo:58395 CLOSE_WAIT 
tcp  961  0 localhost.localdom:9000 localhost.localdo:58025 CLOSE_WAIT 
tcp  857  0 localhost.localdom:9000 localhost.localdo:58040 CLOSE_WAIT 
tcp  953  0 localhost.localdom:9000 localhost.localdo:58005 CLOSE_WAIT 
tcp  761  0 localhost.localdom:9000 localhost.localdo:58016 CLOSE_WAIT 
tcp  1137  0 localhost.localdom:9000 localhost.localdo:57960 CLOSE_WAIT 

close_wait !!! 그 ... 이상입니다 그래서 내가 다음 내

/etc/php5/fpm/pool.d/www을 변경
퓨저 -k 9000/TCP

을 입력하여 모든 프로세스를 죽였다.conf의

이 변경 :

request_terminate_timeout = 이제 30 대

웹 사이트 작동합니다. 간헐적으로 문제가 해결되기를 바랍니다.

+0

매우 유용합니다. 감사합니다. 다른 일은 listen.backlog를 fpm conf의 높은 값으로 설정하고 sysctl net.core.somaxconn을 높은 값으로 설정하는 것입니다. – Ansari

1

확인 : 그것이 경우 sudo service php5-fpm start 시작하지 않을 경우 sudo ps aux | grep php

는, 그것을 sudo service php5-fpm restart를 다시 시작합니다. sudo service mysql start 또는 sudo service mysql restart 또는 sudo service mysql stop :

당신이 당신의 데이터베이스를 다시 시작해야하는 경우

restart, stop 또는 start service 명령을 전달합니다. 디버깅의 몇 시간 후

+0

많은 감사합니다 :) php5-fpm이 잘 다시 시작되고 있기 때문에이 질문은 주제가 아닌 것 같습니다. 이제 502 잘못된 게이트웨이 오류가 있습니다! – Henri

+0

이제 sudo service mysql이 다시 시작됩니다. 중지 : 알 수없는 인스턴스 : start : 작업을 시작하지 못했습니다. – Henri

+0

mysql 설치의 오류 로그를 확인하십시오. 보통'/ var/log/mysql/error.log'에 질문의 마지막 몇 줄을 게시하고 알려 주시면 알려 드리겠습니다. – Fleshgrinder

-1

방금 ​​winginx를 설치했고 504 게이트웨이 문제가있었습니다. 오류 로그는 업스트림 서버 "fastcgi : //127.0.0.1 : 9000"을 가리 킵니다. 이것은 nginx가 php로 프록시하는 곳입니다.

php-cgi.conf를 열었을 때 PHP가 포트 9054에서 수신 대기하고 있음을 발견했습니다. 포트를 9000으로 변경하고 모두 정상입니다.

게이트웨이는 nginx가 서비스에 연결하기 위해 사용하는 경로 및/또는 포트입니다. 예를 들어, Mongodb은 포트 27017에서 즉시 수신 대기하도록 구성됩니다. 보안상의 이유로 프로덕션 서버의 PHP 등의 서비스에서 기본 포트를 변경하는 경향이 있습니다.

관련 문제