NGINX: высокий уровень ввода-вывода, вызванный proxy_cache - PullRequest
0 голосов
/ 03 августа 2020

centos7, 4CPU 8G

Симптомы: NGINX часто зависает. Проверяется верхний статус D. Если трафик c падает до низкого уровня, NGINX не принимает и не обрабатывает запросы. Проверка iostat обнаруживает, что w / s ненормально высокое. Проверка iotop только обнаруживает, что NGINX находится в режиме записи, возвращается в нормальное состояние примерно через 1 секунду, проблема больше не появляется после комментирования, связанного с proxy_cache

Предположительно: достигнуто аномально высокое количество операций записи в секунду NGINX предел операций ввода-вывода жесткого диска

Вопрос: Почему NGINX имеет такое большое количество операций записи в секунду в одно мгновение?

Ниже приведен мой файл конфигурации NGINX:

worker_processes 2; worker_shutdown_timeout 180s;

error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;

worker_rlimit_nofile 65535; events {

worker_connections 65535;
} http {

include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" $upstream_cache_status $request_time $upstream_response_time';

access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
gzip on;
gzip_types application/json text/plain application/x-javascript application/javascript text/javascript text/css application/xml text/xml;
gzip_min_length 1k;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 8 512k;
server_tokens off;
underscores_in_headers on;
proxy_temp_path /tmp/cache_tmp;
proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache1:100m inactive=7d max_size=20g;
upstream backend {

    server xxx:xx max_fails=3 weight=3 fail_timeout=60s;
}
server {

    listen 80;
    location / {

        proxy_pass http://backend;
        proxy_http_version 1.1;
        
        proxy_set_header Connection "";
        proxy_cache cache1;
        proxy_cache_convert_head off;
        proxy_cache_key $uri
        proxy_cache_revalidate on;
        proxy_cache_methods GET HEAD POST;
        
    }
}
}

iotop:

Total DISK READ :     625.15 K/s | Total DISK WRITE :     680.54 K/s
Actual DISK READ:     625.15 K/s | Actual DISK WRITE:      31.36 M/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
 3174 be/4 nginx     320.49 K/s  328.40 K/s  0.00 % 42.88 % nginx: worker process
 4012 be/4 root        0.00 B/s    0.00 B/s  0.00 % 39.93 % [kworker/u4:3+flush-253:0]
 3173 be/4 nginx     304.66 K/s  352.14 K/s  0.00 % 36.35 % nginx: worker process

iostat:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          16.58    0.00   16.58   63.32    0.00    3.52

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda              29.00   291.00  184.00 1635.00  1040.00 37052.00    41.88    56.54   31.08    7.70   33.71   0.47  86.00

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...