동일한 원격 네트워크에 있는 두 장치 중 하나가 60초에 시간 초과되는 이상한 Apache 문제가 발생했습니다. TimeOut을 120초로 설정하여 시간을 2분으로 연장할 수 있지만 두 번째 장치는 여전히 서버와의 연결이 끊어집니다. A는 "서버가 응답을 중지했기 때문에 페이지를 열 수 없습니다"(Safari)라는 일반 메시지를 받습니다.
내 테스트는 데스크탑과 iPad Pro에 간단한 페이지(날짜만 인쇄하는 PHP 스크립트)를 로드하는 것이었습니다. 60초 동안 기다렸다가 iPad를 새로 고쳤더니 오류 메시지가 나타났습니다. 이 결과는 많은 최종 사용자 네트워크에서 복제될 수 있습니다.
내 첫 번째 생각은 Apache가 원격 네트워크의 각 엔터티에 대해 세션을 유지해야 한다는 것이었습니다. Apache는 동일한 IP에서 시작되었지만 mod_session이 아무런 영향을 미치지 않는다는 것을 확인하기 때문입니다.
대상 서버는 Centos 7, Apache 2.4(완전히 패치됨) 및 PHP 5.6.4를 실행하는 AWS 인스턴스입니다. (PHP 7.X로 업데이트하는 프로젝트가 진행 중인 것으로 알고 있습니다.)
Apache 2.2를 실행하는 Centos 6 서버에서는 이런 일이 발생하지 않으며 기존 환경은 개발 환경이므로 사용자가 4명 이하라는 점을 지적하고 싶습니다.
어떤 도움이라도 대단히 감사하겠습니다.
설정:
httpd.conf:
시간 초과 300
KeepAlive 열기
프리포크 설정:
StartServers 8<br>
MinSpareServers 5<br>
MaxSpareServers 20<br>
ServerLimit 256<br>
MaxClients 256<br>
MaxRequestsPerChild 4000<br>
MaxConnectionsPerChild 0<br>
몇 가지 추가 참고 사항: 이는 PHP 파일에서만 발생하는 것으로 보입니다. 심지어 텍스트만 포함된 파일에서도 발생합니다.
답변1
동일한 증상이 나타나는 분들을 위해 말씀드리자면, 문제는 이전 버전의 운영 체제에서 가져온 커널 설정입니다.
"net.ipv4.tcp_tw_recycle=1"이 설정되어 있지만 설정되어서는 안 됩니다. 주문하다
"sysctl net.ipv4.tcp_tw_recycle=0"
모든 것을 해결했습니다. 동일한 문제가 발생하면 명령을 실행하고 결과를 즉시 확인하십시오.
복원해야 하는 경우 다음을 실행하세요.
"sysctl net.ipv4.tcp_tw_recycle=1"
실행 취소. 물론 이를 /etc/sysctl.conf 파일에 추가하면 영구적으로 변경됩니다.
이것이 어느 시점에서 누군가에게 도움이 되기를 바랍니다.