


Introduction à la meilleure méthode de configuration de nginx en haute concurrence (analyse de code)
Ce que cet article vous apporte est une introduction à la meilleure méthode de configuration (analyse de code) de nginx en haute simultanéité. Elle a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
1. L'optimisation ici fait principalement référence à l'optimisation de la configuration de nginx De manière générale, les éléments suivants dans le fichier de configuration nginx sont plus efficaces pour l'optimisation :
Nombre de processus nginx, suggestions. est spécifié en fonction du nombre de processeurs, qui est généralement le même que le nombre de cœurs de processeur ou un multiple de celui-ci.
worker_processes 8;
Allouer un processeur à chaque processus. Dans l'exemple ci-dessus, 8 processus sont alloués à 8 processeurs. Bien sûr, vous pouvez en écrire plusieurs, ou allouer un processus à plusieurs processeurs.
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
La commande suivante fait référence au nombre maximum de descripteurs de fichiers ouverts par un processus nginx. La valeur théorique doit être le nombre maximum de fichiers ouverts dans le système (ulimit-n) divisé par le nombre de. nginx traite, mais nginx La distribution des requêtes n'est pas si uniforme, il est donc préférable d'être cohérent avec la valeur de ulimit -n.
worker_rlimit_nofile 65535;
Utilisez le modèle d'E/S d'epoll pour gérer efficacement les événements asynchrones
use epoll;
Le nombre maximum de connexions autorisées par processus, théoriquement pour chaque serveur nginx Le nombre maximum de connexions est worker_processes *worker_connections.
worker_connections 65535;
délai d'expiration de la connexion http, la valeur par défaut est de 60 s, la fonction est de faire en sorte que la connexion du client au serveur continue d'être valide dans le délai défini lorsqu'une requête ultérieure au serveur se produit. La fonction évite l'établissement de ou rétablit la connexion. N'oubliez pas que ce paramètre ne peut pas être trop grand ! Sinon, de nombreuses connexions http invalides occuperont le nombre de connexions nginx, et éventuellement nginx plantera !
keepalive_timeout 60;
La taille du tampon de l'en-tête de la requête client. Elle peut être définie en fonction de la taille de la pagination de votre système. Généralement, la taille de l'en-tête d'une requête ne dépassera pas 1 Ko, mais parce que la pagination générale du système est plus grande. que 1k, donc ceci est défini sur la taille de la pagination. La taille de la pagination peut être obtenue avec la commande getconf PAGESIZE.
client_header_buffer_size 4k;
Le paramètre suivant spécifiera le cache pour les fichiers ouverts. Il n'est pas activé par défaut. Max spécifie le nombre de caches. Il est recommandé d'être cohérent avec le nombre de fichiers ouverts. combien de temps le fichier n'a pas été demandé. Supprimer le cache.
open_file_cache max=102400 inactive=20s;
Ce qui suit fait référence à la fréquence à laquelle vérifier les informations valides mises en cache.
open_file_cache_valid 30s;
Le nombre minimum de fois que le fichier est utilisé pendant le paramètre inactif dans la directive open_file_cache Si ce nombre est dépassé, le descripteur de fichier est toujours ouvert dans le cache. Comme dans l'exemple ci-dessus, si. il y a un fichier pendant le temps d'inactivité. Une fois qu'il n'est pas utilisé, il sera supprimé.
open_file_cache_min_uses 1;
Masquer les informations sur le numéro de version du système d'exploitation et du serveur Web (Nginx) dans l'en-tête de réponse, ce qui est bon pour la sécurité.
server_tokens off;
peut faire fonctionner sendfile(). sendfile() peut copier des données (ou deux descripteurs de fichiers) entre le disque et le socket TCP. Le pré-envoi du fichier consiste à demander un tampon de données dans l'espace utilisateur avant de transmettre les données. Utilisez ensuite read() pour copier les données du fichier vers ce tampon et write() pour écrire les données du tampon sur le réseau. sendfile() lit immédiatement les données du disque vers le cache du système d'exploitation. Parce que cette copie est effectuée dans le noyau, sendfile() est plus efficace que de combiner read() et write() et d'activer et de désactiver le tampon de suppression (plus d'informations sur sendfile).
sendfile on;
indique à nginx d'envoyer tous les fichiers d'en-tête dans un seul paquet au lieu de les envoyer l'un après l'autre. C'est-à-dire que le paquet de données ne sera pas transmis immédiatement, lorsque le paquet de données est le plus volumineux, il sera transmis en une seule fois, ce qui aidera à résoudre la congestion du réseau.
tcp_nopush on;
Dites à nginx de ne pas mettre les données en cache, mais de les envoyer morceau par morceau - lorsque les données doivent être envoyées à temps, cet attribut doit être défini sur l'application, de sorte que lors de l'envoi d'un petit morceau de données, les informations ne peuvent pas être obtenues immédiatement. Valeur de retour.
tcp_nodelay on;
Par exemple :
http { server_tokens off; sendfile on; tcp_nopush on; tcp_nodelay on; ...... }
La taille du tampon de l'en-tête de requête client. Elle peut être définie en fonction de la taille de la pagination du système. Généralement, la taille d'un en-tête de requête sera. ne dépasse pas 1 Ko. Toutefois, étant donné que la pagination générale du système est supérieure à 1 Ko, la taille de la pagination est définie ici.
client_header_buffer_size 4k;
La taille du tampon de l'en-tête de requête client. Elle peut être définie en fonction de la taille de la pagination du système. Généralement, la taille d'un en-tête de requête ne dépassera pas 1 Ko, mais comme la pagination du système est généralement plus grande. que 1k, donc Ceci est défini sur la taille de la pagination. La taille de la pagination peut être obtenue avec la commande getconf PAGESIZE.
[root@test-huanqiu ~]# getconf PAGESIZE 4096
Mais il existe des cas où client_header_buffer_size dépasse 4k, mais la valeur de client_header_buffer_size doit être définie sur un multiple entier de la "taille de pagination du système".
Spécifier le cache pour les fichiers ouverts. Il n'est pas activé par défaut. Max spécifie le nombre de caches. Il est recommandé d'être cohérent avec le nombre de fichiers ouverts. Inactif fait référence à la durée pendant laquelle le fichier n'est pas demandé auparavant. le cache est supprimé.
open_file_cache max=65535 inactive=60s;
Le nombre minimum de fois que le fichier est utilisé pendant le paramètre inactif dans la commande open_file_cache Si ce nombre est dépassé, le descripteur de fichier est toujours ouvert dans le cache. Comme dans l'exemple ci-dessus, si. il y a un fichier pendant le temps d'inactivité. Une fois qu'il n'est pas utilisé, il sera supprimé.
open_file_cache_min_uses 1;
Spécifiez à quelle fréquence vérifier les informations valides mises en cache.
open_file_cache_valid 80s;
Ce qui suit est un simple fichier de configuration nginx utilisé :
[root@dev-huanqiu ~]# cat /usr/local/nginx/conf/nginx.conf user www www; worker_processes 8; worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000; error_log /www/log/nginx_error.log crit; pid /usr/local/nginx/nginx.pid; worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } http { include mime.types; default_type application/octet-stream; charset utf-8; server_names_hash_bucket_size 128; client_header_buffer_size 2k; large_client_header_buffers 4 4k; client_max_body_size 8m; sendfile on; tcp_nopush on; keepalive_timeout 60; fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 16k; fastcgi_buffers 16 16k; fastcgi_busy_buffers_size 16k; fastcgi_temp_file_write_size 16k; fastcgi_cache TEST; fastcgi_cache_valid 200 302 1h; fastcgi_cache_valid 301 1d; fastcgi_cache_valid any 1m; fastcgi_cache_min_uses 1; fastcgi_cache_use_stale error timeout invalid_header http_500; open_file_cache max=204800 inactive=20s; open_file_cache_min_uses 1; open_file_cache_valid 30s; tcp_nodelay on; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; server { listen 8080; server_name huan.wangshibo.com; index index.php index.htm; root /www/html/; location /status { stub_status on; } location ~ .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ { expires 30d; } log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; access_log /www/log/access.log access; } }
2 Plusieurs instructions sur FastCGI
Cette instruction est FastCGI Le cache précise. un chemin, un niveau de structure de répertoires, une durée de stockage de la zone de mots-clés et une durée de suppression inactive.
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
Spécifiez le délai d'attente pour la connexion au backend FastCGI.
fastcgi_connect_timeout 300;
向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。
fastcgi_send_timeout 300;
接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。
fastcgi_read_timeout 300;
指定读取FastCGI应答第一部分 需要用多大的缓冲区,这里可以设置为fastcgi_buffers指令指定的缓冲区大小,上面的指令指定它将使用1个 16k的缓冲区去读取应答的第一部分,即应答头,其实这个应答头一般情况下都很小(不会超过1k),但是你如果在fastcgi_buffers指令中指 定了缓冲区的大小,那么它也会分配一个fastcgi_buffers指定的缓冲区大小去缓存。
fastcgi_buffer_size 16k;
指定本地需要用多少和多大的缓冲区来 缓冲FastCGI的应答,如上所示,如果一个php脚本所产生的页面大小为256k,则会为其分配16个16k的缓冲区来缓存,如果大于256k,增大 于256k的部分会缓存到fastcgi_temp指定的路径中, 当然这对服务器负载来说是不明智的方案,因为内存中处理数据速度要快于硬盘,通常这个值 的设置应该选择一个你的站点中的php脚本所产生的页面大小的中间值,比如你的站点大部分脚本所产生的页面大小为 256k就可以把这个值设置为16 16k,或者4 64k 或者64 4k,但很显然,后两种并不是好的设置方法,因为如果产生的页面只有32k,如果用4 64k它会分配1个64k的缓冲区去缓存,而如果使用64 4k它会分配8个4k的缓冲区去缓存,而如果使用16 16k则它会分配2个16k去缓存页面,这样看起来似乎更加合理。
fastcgi_buffers 16 16k;
这个指令我也不知道是做什么用,只知道默认值是fastcgi_buffers的两倍。
fastcgi_busy_buffers_size 32k;
在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍。
fastcgi_temp_file_write_size 32k;
开启FastCGI缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU负载,并且防止502错误。但是这个缓存会引起很多问题,因为它缓存的是动态页面。具体使用还需根据自己的需求。
fastcgi_cache TEST
为指定的应答代码指定缓存时间,如上例中将200,302应答缓存一小时,301应答缓存1天,其他为1分钟。
fastcgi_cache_valid 200 302 1h; fastcgi_cache_valid 301 1d; fastcgi_cache_valid any 1m;
缓存在fastcgi_cache_path指令inactive参数值时间内的最少使用次数,如上例,如果在5分钟内某文件1次也没有被使用,那么这个文件将被移除。
fastcgi_cache_min_uses 1;
不知道这个参数的作用,猜想应该是让nginx知道哪些类型的缓存是没用的。
fastcgi_cache_use_stale error timeout invalid_header http_500;
相关推荐:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

Dans PHP, utilisez le mot-clé Clone pour créer une copie de l'objet et personnalisez le comportement de clonage via la méthode de magie du clone \ _ \ _. 1. Utilisez le mot-clé Clone pour faire une copie peu profonde, en clonant les propriétés de l'objet mais pas aux propriétés de l'objet. 2. La méthode du clone \ _ \ _ peut copier profondément les objets imbriqués pour éviter les problèmes de copie superficiels. 3. Faites attention pour éviter les références circulaires et les problèmes de performance dans le clonage et optimiser les opérations de clonage pour améliorer l'efficacité.

PHP convient aux systèmes de développement Web et de gestion de contenu, et Python convient aux scripts de science des données, d'apprentissage automatique et d'automatisation. 1.Php fonctionne bien dans la création de sites Web et d'applications rapides et évolutifs et est couramment utilisé dans CMS tel que WordPress. 2. Python a permis de manière remarquable dans les domaines de la science des données et de l'apprentissage automatique, avec des bibliothèques riches telles que Numpy et Tensorflow.

Les acteurs clés des en-têtes de cache HTTP incluent le contrôle du cache, l'ETAG et la dernière modification. 1.CACHE-Control est utilisé pour contrôler les politiques de mise en cache. Exemple: Cache-Control: Max-Age = 3600, public. 2. Etag vérifie les changements de ressources par le biais d'identifiants uniques, exemple: ETAG: "686897696A7C876B7E". 3.Last-modifié indique le dernier temps de modification de la ressource, exemple: dernier modifié: mer, 21oct201507: 28: 00gmt.

Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

PHP est un langage de script côté serveur utilisé pour le développement Web dynamique et les applications côté serveur. 1.Php est un langage interprété qui ne nécessite pas de compilation et convient au développement rapide. 2. Le code PHP est intégré à HTML, ce qui facilite le développement de pages Web. 3. PHP traite la logique côté serveur, génère une sortie HTML et prend en charge l'interaction utilisateur et le traitement des données. 4. PHP peut interagir avec la base de données, traiter la soumission du formulaire et exécuter les tâches côté serveur.

PHP a façonné le réseau au cours des dernières décennies et continuera de jouer un rôle important dans le développement Web. 1) PHP est originaire de 1994 et est devenu le premier choix pour les développeurs en raison de sa facilité d'utilisation et de son intégration transparente avec MySQL. 2) Ses fonctions principales incluent la génération de contenu dynamique et l'intégration à la base de données, ce qui permet au site Web d'être mis à jour en temps réel et affiché de manière personnalisée. 3) La large application et l'écosystème de PHP ont motivé son impact à long terme, mais il fait également face à des mises à jour de version et à des défis de sécurité. 4) Les améliorations des performances ces dernières années, telles que la sortie de PHP7, lui permettent de rivaliser avec les langues modernes. 5) À l'avenir, PHP doit faire face à de nouveaux défis tels que la conteneurisation et les microservices, mais sa flexibilité et sa communauté active le rendent adaptable.

Les principaux avantages du PHP comprennent la facilité d'apprentissage, un soutien solide sur le développement Web, les bibliothèques et les cadres riches, les performances élevées et l'évolutivité, la compatibilité multiplateforme et la rentabilité. 1) Facile à apprendre et à utiliser, adapté aux débutants; 2) une bonne intégration avec les serveurs Web et prend en charge plusieurs bases de données; 3) ont des cadres puissants tels que Laravel; 4) Des performances élevées peuvent être obtenues grâce à l'optimisation; 5) prendre en charge plusieurs systèmes d'exploitation; 6) Open source pour réduire les coûts de développement.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft