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 必须打开。