Средняя загрузка вычисляется в ядре - см. Почему при вычислении нагрузки Linux не используется прямая скользящая средняя за 1/5/15 минут? для подробностей. Таким образом, вы не можете просто получить показания с более высоким разрешением. Вместо этого вы могли бы написать код пользовательского пространства, который дублирует функциональность, но это кажется немного сложным (не в последнюю очередь потому, что для того, чтобы сделать это правильно, вам придется много сэмплировать, что кажется глупыми накладными расходами на перегруженный сервер).
Вместо этого я бы посоветовал выбрать что-то другое, кроме средней нагрузки, в качестве основы для вашего решения - возможно, что-то, что вы знаете из самой службы. Например, как насчет отката, если время отклика превышает средний порог?
Почти готово. Решение состоит в том, чтобы сначала попробовать статический файл и перейти к обратному прокси-серверу (wordpress )в качестве запасного варианта:
server {
error_log /var/log/nginx/error.log debug;
listen 80;
listen [::]:80;
server_name ${NGINX_HOST};
sendfile on;
tcp_nodelay on;
root /static-pages;
location / {
try_files $uri $uri/ /static-pages/ @proxy;
}
location @proxy {
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_redirect off;
proxy_pass http://wordpress;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Ссылка:
https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#proxy-everything
НО! Когда я пытаюсь получить доступ к /
, я получаю 403 отказ в доступе для /static-pages/index.html
(, который не существует ). Как я могу сказать НЕ проверять /index.html
и просто возвращаться к прокси-серверу, если нет каталога, соответствующего запросу?
Рабочий раствор:
server {
error_log /var/log/nginx/error.log debug;
listen 80;
server_name ${NGINX_HOST};
sendfile on;
tcp_nodelay on;
root /static-pages;
index index.html index.php;
try_files $uri $uri/ @proxy;
location @proxy {
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_redirect off;
proxy_pass http://wordpress$uri;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header Accept-Encoding "";
proxy_set_header Proxy "";
}
location = / {
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_redirect off;
proxy_pass http://wordpress;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header Accept-Encoding "";
proxy_set_header Proxy "";
}
}
Было бы здорово, если бы я мог сжать 2 одинаковых прокси, но ничего страшного.