У меня есть обратный прокси-сервер Nginx, подключенный к бэкэнду uWSGI.Я настроил nginx для входа в централизованную удаленную службу syslog как:
error_log syslog:server=example.com:514,tag=nginx_error debug;
.
Проблема здесь в том, что, когда я удаляю вышеуказанную строку из моего nginx.conf, время обработки запроса становится очень большим и приводит к тайм-ауту клиента (возвращает HTTP 460).
Когда я включаю вход в свой nginx.conf, я вообще не получаю HTTP 460.Но введены дополнительные издержки, которые увеличивают загрузку процессора.Я подозреваю, что nginx отправляет HTTP-запросы моему бэкэнду uWSGI немного медленно, и мой бэкэнд uWSGI способен их корректно обработать, успешно записать ответ обратно в nginx.Среднее время отклика серверной части также увеличивается до 5x при включенном ведении журнала.
Как только я отключаю ведение журнала, загрузка ЦП уменьшается, а запросы передаются в бэкэнд uWSGI, а бэкенду требуется время для возврата ответа в течение определенного периода времени ожидания клиента.Если для обработки запроса требуется время и если клиент (приложение Android / iOS) не получил ответ, он прерывает соединение либо по истечении времени ожидания, либо если пользователь отменяет запрос.
I 'Хотелось бы узнать, нужно ли мне добавить прокси-буфер к моему nginx, чтобы ставить запросы в очередь и отправлять его в мой бэкэнд вместо переполнения.Или любые другие решения приветствуются.
Файл nginx.conf:
error_log syslog:server=example.com:514,tag=nginx_error error;
#daemon off;
upstream django{
server unix:/home/example/conn.sock;
}
server{
listen 80;
charset utf-8;
location / {
uwsgi_pass django;
proxy_connect_timeout 10;
proxy_send_timeout 40s;
proxy_read_timeout 40s;
uwsgi_send_timeout 40s;
uwsgi_read_timeout 40s;
include /home/example/uwsgi_params;
sendfile on;
tcp_nopush on;
reset_timedout_connection on;
keepalive_timeout 40;
keepalive_requests 100000;
}
}
nginx_error.log
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 post event 0000557BCA896120
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 delete posted event 0000557BCA884110
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 http run request: "/v1/api/notes/details/?"
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 http upstream check client, write event:0, "/v1/api/notes/details/"
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [info] 10#10: *90754 epoll_wait() reported that client prematurely closed connection, so upstream connection is closed too while sending request to upstream, client: 10.0.1.236, server: , request: "PUT /v1/api/notes/details/ HTTP/1.1", upstream: "uwsgi://unix:/home/example/conn.sock:", host: "example.com"
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 finalize http upstream request: 499
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 finalize http uwsgi request
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 free rr peer 1 0
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 close http upstream connection: 13
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 free: 0000557BCA872DD0, unused: 48
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 event timer del: 13: 1561818412561
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 reusable connection: 0
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 http finalize request: 499, "/v1/api/notes/details/?" a:1, c:1
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 http terminate request count:1
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 http terminate cleanup count:1 blk:0
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 http posted request: "/v1/api/notes/details/?"
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 http terminate handler count:1
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 http request count:1 blk:0
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 http close request
Jun 29 14:26:12 b80edd13e307 nginx_error: 2019/06/29 14:26:12 [debug] 10#10: *90754 http log handler