У меня есть внутреннее приложение моей компании, которое должно быть очень быстрым для каждого клиента, потому что клиенты очень ограничены, а все это внутреннее.
Итак, ожидается, что клиент отправит так много одновременных запросов и то, что я хочу nginx
сделать - это добавить в это как можно больше параллелизма. Да, это прямо противоположно тому, что обычно делают люди. Куда бы я ни искал, люди просят ограничить количество подключений по IP, тем самым уменьшая атаки и т.д.
Я не могу понять, что происходит в nginx
относительно этого. Что я пытался сделать, так это протестировать его поведение, имея простой сервер, который просто спит 10 секунд и возвращает строку, а я curl
отправил его с 5 разных терминалов. Цифры, где 10 секунд, 18 секунд, 21 секунда, 25 секунд, 30 секунд. Таким образом, происходит какая-то очередь, но не совсем последовательная (иначе она должна была быть 10 секунд, 20 секунд, 30 секунд, 40 секунд, 50 секунд). Но это тоже не полная параллель!
Надеюсь, это проясняет то, что я хочу ... посоветуйте, пожалуйста.
Nginx разрешает любое разумное количество запросов с одного IP. Только что проверил с этой конфигурацией:
server {
listen 3333;
default_type text/plain;
location / {
echo_sleep 3;
echo 'Hi';
}
}
и сценарий:
for ((i = 0; i < 100; i++)); do time curl -s localhost:3333 & done
Я предполагаю, что вы тестировали PHP или какой-либо другой сервер за nginx, и этот сервер не может обрабатывать так много запросов.