Maison  >  Article  >  Optimisation Nginx du site PHP à haute concurrence et à fort trafic

Optimisation Nginx du site PHP à haute concurrence et à fort trafic

无忌哥哥
无忌哥哥original
2018-06-27 14:53:242400parcourir

Notre site peut actuellement gérer des dizaines de millions de PV et des millions de concurrence. J'ai un peu d'expérience en optimisation php+nginx, je vais donc l'écrire pour faire quelques enregistrements.

1.Les sockets TCP et les sockets Unix

Les sockets Unix offrent de meilleures performances que les sockets TCP (car il y a moins de lecture et d'écriture de données d'E/S et moins de changement de contexte).

upstream backend 
{ 
  server unix:/var/run/fastcgi.sock; 
  # server 127.0.0.1:8080; 
}

2. Désactivez ou optimisez access_log

Lors d'un accès avec un trafic important, un accès plus important entraînera la lecture et l'écriture du journal d'accès sur de très grandes quantités de disque. Si la journalisation n'est pas nécessaire, elle peut être désactivée.

access_log off; 
log_not_found off;

ou activez la mise en mémoire tampon

access_log /var/log/nginx/access.log main buffer=32k;

3. Activez Gzip

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";


4.

fastcgi_buffers 256 16k; 
fastcgi_buffer_size 128k; 
fastcgi_connect_timeout 3s; 
fastcgi_send_timeout 120s; 
fastcgi_read_timeout 120s; 
fastcgi_busy_buffers_size 256k; 
fastcgi_temp_file_write_size 256k;

5. Optimiser les processus de travail

nginx est multi-processus plutôt que multithread Nous devons optimiser la configuration liée aux processus comme suit.

Regardez d'abord le nombre de processeurs sur le serveur.

cat /proc/cpuinfo | grep processor

Ensuite, définissez worker_processes, et le nombre de processus est le nombre de processeurs obtenus. work_connections est le nombre maximum de connexions que chaque processus peut ouvrir, qui peut être augmenté. Voici une référence.

# We have 16 cores 
worker_processes 16; 
# connections per worker 
events 
{ 
  worker_connections 4096; 
  multi_accept on; 
}
 记住multi_accept 必须打开。
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn