답변:
동일한 백엔드의 수백 인스턴스를 지정한 경우 Nginx에서 시도를 완료하는 데 ~ 2 초가 걸렸습니다.
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
(.... 어, 필요에 따라 반복하십시오!)
예, 끔찍한 kludge-그것은 다소 강인함을 더합니다 ...
그보다 더 나쁜 것은 다음을 사용할 수 있습니다.
server localhost:8080 max_fails=0;
server localhost:80 backup;
Nginx가 포트 80에서 실행되고 있다고 가정하면 localhost : 8080이 응답 할 때까지 Nginx 주위에서 요청을 계속 반복합니다. 즉, 0 초 지연으로 무한 (?) 횟수를 다시 시도하십시오.
이제 채워진 셀로 돌아가겠습니다 ....
nginx 설치에 Lua가 지원되는 경우 휴면 방법으로 클라이언트를 잠시 동안 유지할 수 있습니다. 작업이 차단되지 않으며 작업자를 잠그지 않습니다. 다른 네트워크 관련 소켓 / 방화벽 시간 초과가 최종적으로 발생할 수 있으므로 사용자는 무한정 보유 할 수 없습니다.
server {
listen 8502;
location / {
#25 seconds sleep
content_by_lua_block {
ngx.sleep(25);
ngx.exit(ngx.HTTP_BAD_GATEWAY);
}
}
}
그런 다음 업스트림 목록에서 클라이언트를 보유하기 위해 위의 서버를 백업으로 추가해야합니다.
upstream backend {
server 127.0.0.1:3001 fail_timeout=2s; #The backend
server 127.0.0.1:8502 backup; #Lua holding server in the event backend is restarting
}
그리고 이것은 프록시 위치 지정 사양에 포함되어야합니다.
proxy_read_timeout 30; #Value must be higher than sleep in Lua
proxy_next_upstream error timeout http_502 http_504;
lua
우분투 17.04에서 nginx에 모듈 을 설치하려면 다음을 실행하십시오.sudo apt-get install libnginx-mod-http-lua