Nginx 및 php-fpm 통신 문제

Nginx 및 php-fpm 통신 문제

나는 2개의 인스턴스로 PHP를 실행하기 위해 업스트림에 2개의 nginx 서버와 4개의 전용 php-fpm 서버를 구성했습니다. 이는 각각 업스트림에서 의미하며 각 php-fpm 서버에 대해 포트 9000 및 9001이 있는 8개의 인스턴스를 제공했습니다.

때때로 nginx가 포트 9000 및 9001에서 php-fpm을 연결할 수 없고 포트 9000 또는 9001에서 nginx에서 php-fpm 서버로 텔넷을 수행하는 경우에도 연결되지 않습니다.

네트워크 연결 문제 또는 서버 문제로 인한 문제를 식별하려면 nginx 및 php-fpm에서 어떤 종류의 로그를 활성화해야 합니까?

어떤 도움이라도 대단히 감사하겠습니다.

감사해요

답변1

php-fpm은 127.0.0.1에서만 수신 대기할 수 있습니다. en은 다른 서버로부터의 연결을 허용하지 않습니다. 루트로 'netstat -tulnp'를 실행하고 php-fpm이 수신 대기하는 포트/주소를 확인해야 합니다.

답변2

댓글을 보니 네 가지가 떠오릅니다.

  1. 라우팅 - 서로 연결할 수 있도록 하는 네트워크의 두 노드입니다. Traceroute, arp, arping과 같은 네트워킹 도구를 사용하여 확인합니다(노드가 동일한지 확인하려면 arp).
  2. 해당 포트를 차단하는 방화벽이나 보안 정책이 있습니까?
  3. 서버에서 RHEL/CentOS/Fedora 또는 SELinux를 활성화하는 다른 버전을 실행하고 있습니까? 그렇다면 해당 기능을 비활성화하고 시도해 볼 수 있습니다. 다음 명령은 SElinux의 상태를 제공하고 원하는 경우 이를 허용하도록 만듭니다. SElinux의 상태를 확인하십시오: getenforce또는 sestatus | grep -i mode. 다음을 시행하는 경우 허용 가능하게 만드세요 setenforce 0. 상태를 다시 확인하세요. getenforce.
  4. 두 서버 모두에서 IPtables를 확인하세요. iptables -nLiptables가 활성화되어 있고 이러한 포트를 허용하는지 나열됩니다. 다음을 수행하여 현재 규칙을 저장하고 플러시하고 당분간 iptables를 중지할 수 있습니다.
    /etc/init.d/iptables 
    iptables 저장 -F
    /etc/init.d/iptables 중지

답변3

이런 일이 발생하면 Php-fpm에 하위 프로세스가 부족할 수 있습니다. 풀 로그에서 오류를 확인하세요. 이는 일반적으로 트래픽이 많은 환경에서 PHP 쿼리를 오랫동안 실행하는 경우에 발생합니다.

관련 정보