Почему Nginx отправляет запросы вышестоящим серверам последовательно - PullRequest
0 голосов
/ 29 мая 2019

Я использую Nginx в качестве балансировщика нагрузки со следующим конфигом:

http {
upstream backend {
    server 127.0.0.1:8010;
    server 127.0.0.1:8011;
}
server {
    listen 80;

    location / {
        proxy_pass http://backend;
    }
}
}

Итак, у меня есть 2 локальных сервера, которые являются приложениями Flask:

#app1.py
from flask import Flask, jsonify, abort, request, make_response
import time

@app.route("/", methods=['GET'])
def root():
    time.sleep(5)
    return jsonify({"response": "Hello, world!"})

app.run(debug=False, port=8010) # for app2.py the only diff is port=8011

Когда я делаю 4 вызова одновременно (на разных вкладках) localhost:80, тогда мне нужно подождать 20 секунд, чтобы увидеть «Привет, мир!» во всех 4 вкладках (вместо 10, как я ожидал, потому что он должен быть распределен на 2 сервера, для каждого это должно занять 10 секунд, но вместо этого он просто последовательно обрабатывает их по очереди). Вы можете объяснить, почему? И как это можно исправить?

1 Ответ

0 голосов
/ 29 мая 2019

Я немного поиграл с этим и понял, что это поведение воспроизводимо только тогда, когда я открываю несколько вкладок в Chromium. Для моего другого браузера (Firefox) все работает как положено. Кроме того, если я выполняю curl запросов, все также работает как ожидалось.

...