Kā pielāgot un optimizēt Nginx Web servera veiktspēju

Ievads

Nginx ir ļoti ātrs, izturīgs, viegls un augstas veiktspējas tīmekļa serveris, kas darbojas vismaz 40% no aizņemtākajām vietnēm pasaulē. Pateicoties Nginx daudzpusībai, tas tiek izmantots arī slodzes līdzsvarotājs, reversais starpniekserveris un HTTP kešatmiņas serveris.


Vislabākā Nginx īpašība ir tās ātrums, kas tai ļauj viegli tikt galā ar tūkstošiem vienlaicīgu savienojumu.

Šajā rakstā mēs parādīsim labākos Nginx tīmekļa servera noregulēšanas un optimizācijas veidus.

Priekšnoteikumi

  • Linux VPS iestatīšana (jebkura Linux garša)
  • Pamatzināšanas par Nginx konfigurāciju
  • Instalēta Nginx

Nginx iestatīšana un optimizēšana ietvers parametru pielāgošanu Nginx noklusējuma konfigurācijas failā /etc/nginx/nginx.conf..

Šeit ir Nginx noklusējuma konfigurācijas faila /etc/nginx/nginx.conf paraugs

lietotāja www dati;
darbspiediena procesi auto;
pid /run/nginx.pid;
iekļaut /etc/nginx/modules-enabled/*.conf;

notikumi {
darba savienojumi 768;
# multi_accept on;
}

http {

##
# Pamata iestatījumi
##

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
tips_hash_max_size 2048;
server_tokens izslēgts;
add_header X-XSS aizsardzība "1; režīms = bloķēt";
add_header X-Frame-Opcijas "SAMEORIGIN";

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

iekļaut /etc/nginx/mime.types;
default_type lietojumprogramma / octet-stream;

##
# SSL iestatījumi
##

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Pametot SSLv3, atsauce: POODLE
ssl_prefer_server_ciphers on;

##
# Reģistrēšanas iestatījumi
##
piekļuves_logs /var/log/nginx/access.log;
kļūda_logs /var/log/nginx/error.log;

##
# Gzip iestatījumi
##

gzip on;

# gzip_vary on;
# gzip_proxied jebkuru;
# gzip_comp_level 6;
# gzip_bufers 16 8k;
# gzip_http_versija 1.1;
# gzip_types text / plain text / css application / json application / javascript text / xml application / xml application / xml + rss text / javascript;

##
# Virtuālā resursdatora konfigurēšana
##

iekļaut /etc/nginx/conf.d/*.conf;
iekļaut / etc / nginx / vietnes iespējotas / *;
}

#mail {
# # Autentifikācijas skripta paraugu skatiet vietnē:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost / auth.php;
# # pop3_spējas "TOPS" "LIETOTĀJS";
# # imap_capamissions "IMAP4rev1" "UIDPLUS";
#
# serveris {
# klausīties localhost: 110;
# protokols pop3;
# starpniekserveris ieslēgts;
#}
#
# serveris {
# klausīties localhost: 143;
# protokols imap;
# starpniekserveris ieslēgts;
#}
#}

Pirms rediģēšanas veiciet pašreizējā nginx konfigurācijas faila dublēšanu, veicot nginx iestatīšanu un optimizēšanu. Ieteicams veikt vienas izmaiņas vienlaikus, saglabāt konfigurācijas failu, restartēt Nginx serveri un veikt veiktspējas pārbaudi, lai redzētu veiktspējas uzlabojumus. Ja neredzat uzlabojumus, iespējams, vēlēsities atgriezties pie noklusējuma / sākotnējās vērtības.

1. Darbinieku procesi

Strādnieku procesi attiecas uz darbinieku skaitu, kurus Nginx nārsta. Vislabākā prakse ir viena darbinieka process palaist vienā procesora kodolā. Ja mašīnā / VPS ievietosit vērtību, kas pārsniedz CPU kodolu skaitu, tas sistēmā izraisīs dīkstāves procesus.

Pēc noklusējuma darbinieka procesu vērtība ir iestatīta uz auto.

Lai uzzinātu CPU kodolu skaitu jūsu sistēmā, izpildiet komandu:

$ grep procesors / proc / cpuinfo | wc -l
1

Mūsu VPS mums ir 1 kodols, tāpēc strādnieka procesa vērtību ieteicams iestatīt uz 1

konfigurācijas failā, kā parādīts zemāk:

1 darba procesi;

Ja jūsu nginx tīmekļa serverī ir vairāk datplūsmas un ir nepieciešams palaist vairāk procesu, tad ieteicams jaunināt mašīnu uz vairāk kodoliem un pielāgot darbinieka procesus jaunajam CPU kodolu skaitam jūsu sistēmā..

2. Darbinieku savienojumi

Darbinieku savienojumi ir klientu skaits, kurus vienlaikus var apkalpot Nginx tīmekļa serveris. Apvienojot ar darbinieku procesu, jūs iegūstat maksimālo klientu skaitu, ko var apkalpot sekundē:

Maksimālais klientu skaits sekundē = Strādnieku procesi * Darbinieku savienojumi

Pēc noklusējuma strādnieku savienojumu vērtība ir iestatīta uz 768.

Tomēr jāņem vērā, ka lielākajā daļā gadījumu pārlūks vienā serverī vienlaikus atver vismaz 2 savienojumus, tāpēc to varētu samazināt uz pusēm.

Lai maksimizētu visu Nginx potenciālu, strādnieku savienojumi jāiestata uz maksimālo pieļaujamo procesu skaitu, ko vienlaikus var darbināt kodols. Tas ir vienāds ar atvērto failu aprakstu skaitu, ko var iegūt ar komandu:

$ ulimit -n
1024. gads

Mūsu VPS kodols ir ierobežots līdz 1024 procesiem vienlaikus, tāpēc ieteicams darbinieku savienojumu vērtību (notikumu sadaļā) iestatīt uz 1024 šādi:

notikumi {
darba savienojumi 1024;

}

Pēc mūsu aprēķiniem maksimālais klientu skaits, ko var apkalpot sekundē, ir

1024 darbinieku savienojumi * 1 darbinieka process = 1024 klienti sekundē

3. Vairākkārt pieņemt

Vairāku akceptēšana nosaka, kā darbinieka process pieņem jaunus savienojumus.

Pēc noklusējuma darbinieka process ir izslēgts un vienlaikus pieņem vienu jaunu savienojumu.

Ja tas ir uzvilkts, darbinieka process pieņem visus jaunos savienojumus vienlaikus. Multi_accept vērtību (notikumu sadaļā) vajadzētu izslēgt, kā parādīts zemāk:

notikumi {
darba savienojumi 1024;
multi_accept izslēgts;
}

4. Gzip saspiešana

Klientu atbilžu saspiešana samazina viņu lielumu, tādējādi izmantojot mazāku tīkla joslas platumu un uzlabojot lapu ielādēšanas laiku lēniem savienojumiem. Jāatzīmē, ka pats saspiešanas process patērē mašīnas resursus, tāpēc jums vajadzētu analizēt un novērtēt saspiešanas izmaksu un ieguvumu attiecību. Pretējā gadījumā kompresija var radīt neizdevīgus apstākļus un samazināt nginx veiktspēju. Saspiešanu ieteicams veikt šādi:

  1. Iespējojiet gzip saturu tikai atbilstošam saturam, piemēram, CSS, tekstam, JavaScript failiem, e.t.c
  2. Pārbaudiet saspiešanas efektus, iespējot un atspējot saspiešanu dažādiem satura veidiem un izmēriem
  3. NEpalieliniet saspiešanas līmeni, jo tas maksā CPU piepūli bez proporcionāla caurlaidspējas pieauguma.

Parauga ieteicamā gip konfigurācija ir šāda: (ietvaros http sadaļa)

gzip on;
gzip_vary ieslēgts;
gzip_proxied jebkuru;
gzip_comp_level 1;
gzip_bufers 16 8k;
gzip_http_version 1.1;
gzip_types text / plain text / css application / json application / javascript text / xml application / xml application / xml + rss text / javascript;

5. Buferi

Buferiem ir liela loma nginx veiktspējas optimizācijā. Šie ir mainīgie lielumi, kas jāpielāgo optimālai veiktspējai:

client_body_buffer_size – apstrādā klienta bufera lielumu, t.i., POST darbības, piem. veidlapu iesniegumi, kas nosūtīti uz Nginx tīmekļa serveri. Ieteicams iestatīt to uz 10K.

client_header_buffer_size – līdzīgs client_body_buffer_size, bet apstrādā klienta galvenes lielumu. Ieteicams to iestatīt uz 1K.

client_max_body_size – maksimālais pieļaujamais klienta pieprasījuma lielums. Ja vērtība tiek pārsniegta, nginx rada kļūdu 413 vai Request Entity ir pārāk liela.

large_client_header_buffers – maksimālais buferu skaits un lielums lielu klientu galvenēm.

Ieteicamie iestatījumi ir šādi (ietvaros http sadaļa)

client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 4 4k;

Ja vērtības virs nginx darbosies optimāli, bet vēl tālākai optimizēšanai jūs varat pielāgot vērtības un pārbaudīt veiktspēju.

6. Taimauti

Taimauti patiešām ievērojami uzlabo nginx veiktspēju. Neatlaidīgie savienojumi samazina CPU un tīkla pieslēgumu, kas nepieciešami savienojumu atvēršanai un aizvēršanai. Šie ir mainīgie lielumi, kas jāpielāgo, lai nodrošinātu vislabāko sniegumu:
klienta_header_timeout & client_body_timeout – laiks, kurā nginx serveris gaidīs klienta galvenes vai struktūras nosūtīšanu pēc pieprasījuma.

keepalive_timeout – ilgums, kurā saglabājas nepārtraukts savienojums, pēc kura nginx pārtrauc klienta savienojumu.

send_timeout – noildze atbildes nosūtīšanai klientam. Ja klients šajā laikā nesaņem servera atbildi, nginx pārtrauc savienojumu.

Šīs ir ieteicamās vērtības: (http sadaļā)

client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;

7. Piekļuves žurnāls

Mežizstrāde ir ļoti būtiska sistēmu pārvaldībai, problēmu novēršanai un revīzijai. Tomēr lielu datu gabalu reģistrēšana un glabāšana patērē tik daudz sistēmas resursu, lai patērētu vairāk CPU / IO ciklu, tādējādi samazinot servera veiktspēju. piekļuves reģistrēšanai tas reģistrē katru nginx pieprasījumu, tādējādi patērējot daudz CPU resursu, kas samazina nginx veiktspēju.

Šajā sakarā ir divi risinājumi.

  1. Pilnībā atspējojiet piekļuves reģistrēšanu
    access_log off;
  2. Ja piekļuves reģistrēšana ir obligāta, ieslēdziet piekļuves žurnāla buferizēšanu. Tas ļauj Nginx buferizēt virkni žurnāla ierakstu un rakstīt tos vienlaikus žurnāla failā, tā vietā, lai veiktu atšķirīgu rakstīšanas darbību katram atsevišķam žurnāla ierakstam..
    piekļuves_logs /var/log/nginx/access.log galvenais buferis = 16k

Jūs varētu izmantot arī atvērtā koda risinājumus reģistrēšanai, piemēram, ELK steks un citi, kas visus jūsu sistēmas žurnālus centralizēs.

Secinājums

Kad esat optimizējis nginx tīmekļa serveri, nākamais solis ir uzraudzīt serveri un laika gaitā pielāgot iestatījumus, kad notiek trafika veidošanās uz serveri vai rodas citi faktori. Tāpēc ieteiktās vērtības nav vislabākās visiem apstākļiem, bet tikai izstrādes laikā un mazas vai vidējas trafika laikā uz tīmekļa serveri. Varat palielināt pakāpeniskas vērtības, veicot veiktspējas pārbaudi, lai pārbaudītu uzlabojumus.

Ja neredzat uzlabojumus, lūdzu, atstājiet vērtību pēc noklusējuma. Kopā dažādu parametru saviebotās vērtības ievērojami uzlabo nginx veiktspēju.

Citi apsvērumi, kurus jūs varētu veikt, lai uzlabotu sava tīmekļa servera veiktspēju, it īpaši, ja palielinās trafiks, ir slodzes līdzsvarošana, automātiska mērogošana, augsta pieejamība, minot tikai dažus. Ja viss pārējais neizdodas, apsveriet iespēju pāriet uz jaunu VPS nodrošinātāju ar labāku, modernāku aparatūru un programmatūru (nepieciešama palīdzība? Apmeklējiet HostAdvice labāko VPS mitināšanas pakalpojumu sarakstu).

Iepazīstieties ar šiem top 3 VPS pakalpojumiem:

A2 mitināšana

Sākuma cena:
5,00 USD


Uzticamība
9.3


Cenu noteikšana
9.0


Lietotāju draudzīgs
9.3


Atbalsts
9.3


Iespējas
9.3

Lasīt atsauksmes

Apmeklējiet vietni A2 Hostings

ScalaHosting

Sākuma cena:
12,00 USD


Uzticamība
9.4


Cenu noteikšana
9.5


Lietotāju draudzīgs
9.5


Atbalsts
9.5


Iespējas
9.4

Lasīt atsauksmes

Apmeklējiet vietni ScalaHosting

Hostinger

Sākuma cena:
3,95 USD


Uzticamība
9.3


Cenu noteikšana
9.3


Lietotāju draudzīgs
9.4


Atbalsts
9.4


Iespējas
9.2

Lasīt atsauksmes

Apmeklējiet vietni Hostinger

Saistītie padomi

  • Kā instalēt WordPress ar Nginx & Redis
    jauniņais
  • Kā instalēt WordPress ar Nginx & Redisēt uz CentOS VPS vai speciālu serveri
    starpposms
  • Kā rūdīt Nginx Web Server uz Ubuntu 18.04 VPS vai Dedicated Server
    eksperts
  • Kā instalēt LEMP (Linux, Nginx, MySQL, PHP) steku CentOS 7 VPS vai speciālajā serverī
    starpposms
  • Kā kopā konfigurēt Nginx un Apache tajā pašā Ubuntu VPS vai speciālajā serverī
    starpposms
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me