(Статическая обработка ресурсов) Чем nginx лучше tomcat?

Nginx

Преамбула

Для часто используемых серверов вы можете узнать больше об apache, tomcat (сервер приложений Java), lls и других серверах. Мы узнали больше о том, что nginx часто используется для обратных прокси. Суть в том, что nginx — это еще и высокопроизводительный веб-сервер. Обратный прокси-сервер, обычно используемый для ресурсов статической внешней страницы и балансировки нагрузки.

Ниже блоггер познакомит вас с nginx. И обратный прокси-сервер nginx, статические ресурсы и сравнение стресс-тестов.

Установить

Окружение автора - ubuntu 18.04, так что скачивать очень просто. Источник yum для Centos также имеет nginx. для окон. Просто скачайте и используйте его напрямую.

  • скачать нгинкс:sudo apt get nginx
  • Загрузите jmeter с официального сайта, установите его самостоятельно и распакуйте (sudo chomd -R 777 apache-jmeter-5.1.1)

Таким образом загружаются некоторые основные инструменты. Прямой доступ к nginx или sudo nginxlocalhostЕсли есть hello nginx, установка прошла успешно.Для jmeter, если вы его установили, то можете зайти на официальный сайт для его установки.

对于nginx安装后的一些路径,都在

  • Все файлы конфигурации находятся в /etc/nginx
  • Файлы программы находятся в /usr/sbin/nginx
  • Лог размещается в /var/log/nginx
  • и создали сценарий запуска nginx в /etc/init.d/

还有nginx的一些常用关闭命令

  • nginx -s reload : перезагрузка вступает в силу после изменения конфигурации.
  • nginx -s reopen : повторно открыть файлы журнала
  • Отключить нгинкс: nginx -s stop : быстро остановить nginx quit : полностью и упорядоченно остановить nginx
  • Другие способы остановить nginx: ps -ef | grep nginx убить -9 ххх

Если у вас недостаточно прав, не забудьте добавитьsudo

обратный прокси

在这里插入图片描述
Для nginx многие используют nginx+tomcat для балансировки нагрузки. Улучшить параллелизм системы. Для файла конфигурации nginx в/etc/nginx/conf.d/под новымproxy.conf(также можно настроить в nginx/nginx.conf) Например, я хочу использовать свой локальный порт 8081 для проксирования локального nginx.

  upstream tomcat-server{

   server 47.100.58.250:8080 ;
  }
  server{
         listen 8081; 
         server_name localhost; 
         location / {
           proxy_pass http://tomcat-server;
           root html;
           index index.html;
         }
} 

Я изменил nginx/nginx.conf, чтобы удалить некоторые временно неиспользуемые файлы.

user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    client_max_body_size 20m;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

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

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
}

Таким образом, вы можете проксировать доступ к адресу сервера локальноhttp://localhost:8081/Конечно, если есть несколько серверов, которые можно настроить в восходящем направлении, можно также настроить вес каждого узла и так далее. Он не будет представлен подробно.

在这里插入图片描述

сервер статических ресурсов

Сегодня популярно разделение передней и задней части. nginx принимается многими энтузиастами фронтенда. Через nginx можно легко развернуть статические ресурсы, чтобы добиться эффекта динамического и статического разделения.

在这里插入图片描述

Настроить сервер статических ресурсов с помощью nginx очень просто. Создайте новый static.conf в указанном выше файле того же уровня conf.d/

server {
    listen    8082;
    server_name localhost;

    location / {
      root  /home/tomcat9/webapps/ROOT/;
      autoindex on;
    }
  }

Корень — это абсолютный путь tomcat (вы можете настроить его по своему усмотрению), я заранее запустил index.jsp домашней страницы tomcat и сохранил его как файл index.html.

Ну, теперь мы закончили两件事:8081端口负载均衡(反向代理到我服务器),8082端口制成本地tomcat的静态文件服务器.

Затем откройте томкэт. Слева nginx как сервер для возврата статики

在这里插入图片描述

Сравнение стресс-тестов nginx и tomcat

Параллельное сравнение результатов

  1. Скачанный ранее jmeter готов к работе. для той же статической страницы. путь nginxhttp://localhost:8082/, котhttp://localhost:8080/.
  2. Добавьте группу потоков. Сначала протестируйте 15 000 потоков, запрашивающих домашнюю страницу одновременно в течение 1 с. Добавьте http-запрос в группу потоков. ip: локальный. порт: 8080 Добавьте свой любимый формат данных в Add -> Listener (вы можете найти плагин, если вам нужен qps)
  3. В сравнении Среди них tomcat, максимум около qps2400
    在这里插入图片描述
    Результат nginx явно сильнее, максимум qps3000
    在这里插入图片描述

Сравнение влияния на сервер

  • Когда 20000 одновременных запросов в течение 10 с. Прикрепленное состояние процессора на момент завершения работы процессора tomcat достигло 21,6%. Память составляет 6,4%, то есть с параллельным tomcat сильно давит на процессор и память сервера.
    在这里插入图片描述
    Однако nginx почти не меняет память в процессе стресс-теста и почти не ест память. Использование процессора также меньше, чем у tomcat.
    在这里插入图片描述

Суммировать:

показатель nginx tomcat
средний ответ 0ms 1ms
Лучшие 95% времени отклика 4 5
Верхнее время отклика 99% 7 16
запросов в секунду (наблюдение) 3000 2400
влияние на память 0% 6.4%
влияние на процессор 21.6% 14%
разное Легкий и мощный Java ест немного памяти и тормозит

(Среда измерения относительно однородна)

что сказать в спину

С помощью серии сравнений откройте для себя возможности nginx. Балансировка нагрузки и серверы статических ресурсов могут снизить нагрузку на параллелизм. И у nginx еще много знаний. Требуются дальнейшие исследования. И преимуществ nginx гораздо больше, чем эти, и вам нужно глубоко изучить!

В то же время, реклама для вашего собственного публичного аккаунта

  • Добро пожаловать на мой личный публичный номер: bigsai