translation

Tekst przetłumaczony przez AI.

뚠뚠멍의 생각들

Kluczowe ustawienia Nginx jako serwera WWW

  • Język pisania: Koreański
  • Kraj odniesienia: Wszystkie krajecountry-flag
  • TO
Zdjęcie profilowe

Podsumowanie posta wygenerowane przez AI durumis

  • Omówiliśmy kluczowe ustawienia Nginx, takie jak kompresja gzip, konfiguracja proxy_buffer, ustawienia procesów worker i keep-alive, które pozwalają zoptymalizować wydajność serwera WWW.
  • W szczególności podkreśliliśmy znaczenie kompresji gzip i buforowania proxy_buffer w celu zmniejszenia ilości przesyłanych danych i zminimalizowania obciążenia serwera, a także zarządzania połączeniami za pomocą ustawień procesów worker i keep-alive.
  • Zaprezentowaliśmy różne testy i wskazówki dotyczące wdrażania optymalnych ustawień dostosowanych do środowiska serwera oraz zapewnienia stabilnej pracy.

Nginx to open-source'owe oprogramowanie, często używane jako serwer WWW lub serwer proxy WWW.

Przy odpowiedniej konfiguracji może wydajnie dostarczać zawartość statyczną.

Chcę tutaj zapisać kilka kluczowych ustawień.


Kilka kluczowych ustawień związanych z wydajnością

1. Kompresja gzip

Podczas ładowania strony internetowej, pobieramy z serwera WWW wiele plików, takich jak JavaScript, obrazy, HTML i CSS.

Zamiast przesyłać te treści w oryginalnej postaci, możemy wykorzystać kompresję gzip, co znacznie zmniejszy ilość przesyłanych danych.


Oznacza to, że po zastosowaniu:

- Zmniejszy się ilość danych, co zaowocuje oszczędnością przepustowości.

- Można zaoszczędzić zasoby serwera.

- Z punktu widzenia użytkownika, rzeczywista prędkość ładowania wzrośnie.


Z drugiej strony, ponieważ serwer musi wykonać kompresję gzip przed wysłaniem odpowiedzi, może to prowadzić do wzrostu obciążenia procesora.

Przed zastosowaniem na poziomie produkcyjnym konieczne jest przeprowadzenie testów, aby określić, które typy plików mają być kompresowane, jaki poziom kompresji zastosować i jak duże pliki kompresować.


Poniżej przedstawiono kilka ustawień związanych z gzip.


gzip on; # Włącza kompresję gzip.
gzip_vary on; # Dodaje nagłówek Vary: Accept-Encoding.
gzip_proxied any; # Jeśli nginx jest używany jako serwer proxy, kompresuje odpowiedzi otrzymane od zaplecza. (kompresja żądań pośredniczących)
gzip_min_length 256; # Kompresuje tylko pliki o rozmiarze co najmniej 256 bajtów
gzip_comp_level 5; # Ustawia poziom kompresji od 1 do 9. Im wyższy poziom, tym większe zużycie procesora. Poziom 5 zapewnia około 50% kompresji.
gzip_types text/plain text/css text/xml application/json application/javascript;
// Ustawia typy zawartości do kompresji.

* gzip_vary instruuje, aby serwer wysyłał skompresowaną i nieskompresowaną wersję zawartości, odpowiednio, w zależności od tego, czy klient obsługuje gzip. (informuje, że w zależności od nagłówka żądania klienta (Accept-Encoding) może zostać dostarczona inna wersja zawartości).


2. Ustawienie proxy_buffer

Nginx buforuje odpowiedzi przed wysłaniem ich do klienta.

Gdy serwer WWW wysyła odpowiedź do klienta, a klient jest powolny, serwer musi czekać na wysłanie danych. (wąskie gardło sieci)

W tym czasie serwer zużywa zasoby, dlatego używamy bufora do tymczasowego przetwarzania odpowiedzi niezależnie od szybkości przetwarzania klienta. Dzięki temu uzyskujemy następujące korzyści:

- Optymalizacja obciążenia serwera

- Zmniejszenie wąskiego gardła sieci

  
location / {
proxy_pass adres_serwera;
        # Ustawienia bufora proxy
        proxy_buffering on; # Włącza buforowanie.
        proxy_buffer_size 4k; # Ustawia rozmiar bufora. (głównie nagłówki).
        proxy_buffers 8 4k; # Liczba i rozmiar buforów dla każdego połączenia (8 buforów po 4 kB)
        proxy_busy_buffers_size 8k; # Maksymalny rozmiar bufora dostępny podczas wysyłania odpowiedzi do klienta

    }

Uwaga: Zbyt duży rozmiar bufora może opóźnić przesyłanie strumieniowe tekstu w czasie rzeczywistym, dlatego konieczne są testy. Szczególnie w przypadku wielu nowych usług związanych z AI, jeśli strumieniowanie tekstu nie działa, należy sprawdzić to ustawienie.


3. Ustawienia worker i http

Procesy worker przetwarzają żądania klientów, a ich liczbę można skonfigurować dla każdego rdzenia procesora serwera.

HTTP to zazwyczaj żądanie - połączenie - odpowiedź - zamknięcie połączenia, ale aby zmniejszyć zasoby używane do nawiązywania połączeń dla wielu żądań, można utrzymywać połączenia klienta. Jest to ustawienie keep alive.


worker_processes auto; # Automatyczne ustawienie w zależności od liczby dostępnych rdzeni CPU
worker_connections 1024; # Liczba połączeń, które każdy proces worker może obsługiwać jednocześnie


# Ustawienia keep-alive
keepalive_timeout 65;
keepalive_requests 100;

server {
    listen 80;

    location / {
        proxy_pass adres_serwera;
    }
}

Powodem grupowania tych dwóch ustawień jest to, że:

Jeśli serwer ma 4 rdzenie, teoretycznie maksymalna liczba połączeń wynosi 1024 * 4 = 4096.

(Może być niedokładne w zależności od zasobów i warunków ruchu sieciowego)

Gdy 4096 klientów łączy się jednocześnie i zajmuje wszystkie keepalive przez 65 sekund,

4097. użytkownik próbujący się połączyć może napotkać opóźnienia w odpowiedzi, ponieważ nie będzie mógł nawiązać połączenia.


Zatem, zakładając stabilne zasoby serwera dzięki automatycznej skalowalności, jeśli występują opóźnienia w odpowiedzi podczas zdarzeń, powyższe ustawienia mogą mieć pośredni wpływ.


4. Inne - blok location

Niektóre ustawienia, takie jak bufor proxy, można zastosować do poszczególnych adresów URL żądań.

* Niektóre ustawienia, takie jak keep-alive, są stosowane na poziomie HTTP/serwera i nie można ich ustawiać dla poszczególnych bloków.

server {
listen 80;
server_name example.com;

# Obsługa ścieżki podstawowej (/)
location / {
    proxy_pass adres_serwera;

    # Ustawienia buforowania
    proxy_buffering on;                   
    proxy_buffers 8 16k;                  
    proxy_buffer_size 32k;                
    proxy_busy_buffers_size 64k;          
}

# Obsługa ścieżki /test
location /test {
    proxy_pass adres_serwera2;

    # Wyłączenie buforowania
    proxy_buffering off;                  # Wyłączenie buforowania (natychmiastowe wysyłanie odpowiedzi)
}
}


Powyższe ustawienia pozwalają na optymalizację wydajności sieci web. Po przeprowadzeniu testów z uwzględnieniem wielu przypadków testowych, zoptymalizuj wydajność serwera!

* Zmiany w konfiguracji nginx można zastosować bez przestojów serwera, więc w większości przypadków jest to bezpieczne.






뚠뚠멍
뚠뚠멍의 생각들
뚠뚠멍
Pomiar wydajności witryny internetowej - PerformanceObserverPrzedstawiamy narzędzie do mierzenia wydajności witryny internetowej PerformanceObserver oraz metody optymalizacji Web Core Vitals. Dowiedz się, jak poprawić wskaźniki CLS, LCP, FCP i FID.

September 24, 2024

Moje problemy z obsługą wielu przeglądarek (głównie Safari)Artykuł opisuje problemy z obsługą wielu przeglądarek (głównie Safari), które pojawiły się podczas tworzenia aplikacji mobilnych i sposoby ich rozwiązania. Omówione zostaną problemy z obliczniem wysokości viewportu, przesunięciem interfejsu użytkownika sp

September 27, 2024

Tworzenie niestandardowych dyrektyw w Nuxt.jsArtykuł opisuje sposób tworzenia niestandardowej dyrektywy przewijania w Nuxt.js. Omówiono wykorzystanie funkcji hook takich jak bind, inserted, update, componentUpdated, unbind oraz sposób rejestrowania wtyczki Nuxt.

September 28, 2024

Wykorzystanie Google Cloud Storage i Cloud Run do tworzenia CDN – część 2Drugi wpis poświęcony wykorzystaniu Google Cloud Storage i Cloud Run do budowy sieci dostarczania treści (CDN). Opisujemy optymalizację przesyłania obrazów i plików tekstowych oraz dystrybucję zasobów w 8 regionach na całym świecie w celu zmniejszenia opó
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그

September 6, 2024

Wykorzystanie Cloud Run do serwowania plików statycznych - 1Wpis na blogu opisujący sposób udostępniania plików statycznych za pomocą Google Cloud Run. Skupia się na przekierowaniach i optymalizacji wydajności.
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그

September 4, 2024

[DB] Kryteria konfigurowania pamięci podręcznejPrzedstawiamy kryteria konfiguracji pamięci podręcznej bazy danych oraz rzeczywiste przykłady zastosowań. Dowiesz się, jak buforować dane rzadko zapisywane, ale często odczytywane, a także jak utrzymywać ich aktualność za pomocą ustawień TTL.
제이온
제이온
제이온
제이온

April 25, 2024

Optymalizacja i synchronizacja obrazów za pomocą Google Cloud Storage i Cloud Run - 3Opisujemy sposób optymalizacji obrazów i synchronizacji ich w różnych regionach przy użyciu Google Cloud Storage i Cloud Run. Przedstawiamy implementację funkcji konwersji, replikacji i usuwania plików graficznych.
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그

September 8, 2024

[Dla osób bez informatycznego wykształcenia, jak przetrwać jako programista] 14. Podsumowanie często zadawanych pytań na rozmowach kwalifikacyjnych dla początkujących programistówPodsumowując, przedstawiamy często zadawane pytania techniczne na rozmowach kwalifikacyjnych dla programistów (obszar pamięci, struktury danych, bazy danych itd.). Mamy nadzieję, że pomoże to w przygotowaniach do rozmowy kwalifikacyjnej.
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

April 3, 2024

Phylaxis wprowadza chmurowe rozwiązanie WAAP łączące CDN i firewallPhylaxis wprowadził na rynek Phylaxis WAAP, chmurowe rozwiązanie bezpieczeństwa łączące CDN i WAAP. Oferuje ono atrakcyjną cenę i wysoką skuteczność ochrony przed atakami DDoS, a także szeroki zakres funkcji i bezpłatny plan taryfowy.
스타트업 커뮤니티 씬디스 (SeenThis.kr)
스타트업 커뮤니티 씬디스 (SeenThis.kr)
스타트업 커뮤니티 씬디스 (SeenThis.kr)
스타트업 커뮤니티 씬디스 (SeenThis.kr)

May 27, 2024