Optimiser Nginx + PHP-FPM Pour le temps de réponse plus rapide /pour adserving Openx/

Je suis en cours d'exécution Nginx + PHP-FPM Pour afficher la publicité sur OpenX. Actuellement, mon temps de réponse est terrible, même pendant la faible charge. Cependant, le mien CPU et les ressources de mémoire sont en ordre, donc je ne peux pas comprendre ce qui est un goulot d'étranglement.

Ma configuration actuelle pour nginx et php-fpm Tel est:


worker_processes 20;
worker_rlimit_nofile 50000;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 15000;
multi_accept off;
use epoll;
}

http {
include /etc/nginx/mime.types;

access_log /var/log/nginx/access.log;

sendfile on;
tcp_nopush off;

keepalive_timeout 0;
#keepalive_timeout 65;
tcp_nodelay on;

gzip on;
gzip_disable "MSIE [1-6]\./?!.*SV1/";
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;

# Default location
location / {
root /var/www;
index index.php;
}

## Parse all .php file in the /var/www directory
location ~ .php$ {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_ignore_client_abort off;
}

PHP-FPM:
rlimit_files = 50000
max_children = 500


Je ne suis activé que des paramattres PHP-FPM, que j'ai changé PHP-FPM.

Quelqu'un a-t-il des conseils sur comment puis-je l'optimiser afin que je puisse servir plus de demandes? En ce moment je vois un terrible temps de réponse.
Invité:

Christine

Confirmation de:

Premièrement, trop de travailleurs, et les limites sont installées excessivement élevées. Nombre maximum de travailleurs pour php-fpm En soi, il sera assez élevé de freiner votre serveur. L'élimination des restrictions sur le serveur n'accélère pas nécessairement son travail, mais elle peut en réalité avoir l'effet inverse.

Nombre de travailleurs: 20 Il a peu de sens si vous n'avez pas 20 processeurs/Les noyaux de la machine, vous appelez effectivement un effet négatif, car les travailleurs auront un remplacement excessif du contenu. Si vous utilisez un processeur à double core, alors 2 Les travailleurs devraient suffire.

Lignes de travail: Encore une fois, je viens de jeter la limite au ciel, vous ne résolvez pas vos problèmes. Si votre sortie ulimit-n fait quelque chose comme 1024, Ensuite, vos connexions de travail doivent être installées sur 1024 ou moins /Peut-être même 768/, Il est peu probable que vous ayez 2 x 1024 composés simultanés, surtout avec quelque chose comme PHP.

Emplacement et paramètres racine PHP Voir B.
http://wiki.nginx.org/Pitfalls
, Il est préférable de travailler si vous placez votre directive racine sur le niveau serveur {}, Et pas au niveau de localisation. Une fois que vous le faites, vous pouvez utiliser $document_root$fastcgi_script_name comme une valeur SCRIPT_FILENAME, car $document_root Il sera automatiquement distribué aux blocs d'emplacement ci-dessous.

En d'autres termes, vous pouvez gérer directement des fichiers statiques:


location ~* \./ico|css|js|gif|jpe?g|png/$ {
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}


Utiliser l'accélérateur PHP, à savoir APC /de apc.enabled=1 dans php.ini/ ou XCache, et rappelez-vous vos paramètres php, tel que memory_limit. Par exemple, si vous n'avez qu'un système avec 2 Gb de RAM, alors très peu de sens pour résoudre 500 Travailleurs avec une limite 128 MB chacun. Cela est particulièrement vrai si vous utilisez également d'autres services sur votre serveur.

Alice

Confirmation de:

Il serait également utile de mettre:


access_log off;


Comme je suppose que vous ne vous souciez pas vraiment de générer des magazines pour ces demandes.

Christine

Confirmation de:

Vous devez absolument réduire le nombre de travailleurs, car je doute que vous ayez 20 cores/processors.
De plus, je consulterais votre serveur de base de données, il existe une probabilité élevée que le problème est là.

De plus, vous avez augmenté
worker_rlimit_nofile

avant que
50000

, J'espère que vous savez que le système d'exploitation définit généralement la limite 1024 /défaut/, Vous pouvez essayer de demander la limite actuelle en tapant
ulimit -n


Vous pouvez augmenter la limite difficile NOFILE /Nombre de fichiers ouverts/, En remplissant cette commande
ulimit -n 50000

dans init.d ou
https://coderoad.ru/2694004/
, Apprendre à utiliser
limits.conf

Pour une installation constante de restrictions sur l'échelle de l'ensemble du système.

Babette

Confirmation de:

Vraiment apporter la productivité au maximum en utilisant nginx Et php5-fpm est un art complet. Pour cela, vous devez vraiment comprendre quel contenu vous servez.

Par exemple, je ne vois aucune utilisation try_files ou toute mise en cache dans votre configuration. Sais-tu cela nginx Livré avec support intégré memcache? Vous pouvez cacher des images et html/css,, et php pages. Si vous vous souciez surtout des clics, ces clics seront toujours comptabilisés, même si les affichages ne sont pas pris en compte.

Mettre vos bannières dans le système de fichiers tmpfs mount, pas log. access_log ou niveau global, désactivez les modules que vous n'avez pas besoin dans php, Utilisez les dernières versions mysql, utilisation InnoDB, Pour réduire le verrouillage de la table, jouer avec une méthode du réservoir InnoDB, Pour réduire l'enregistrement sur le disque, une augmentation de la mémoire maximale des tables dans mysql, Pour réduire la création de fichiers temporaires sur le disque lorsqu'il est joint demandé SQL etc.

Nginx - Ceci n'est qu'une partie d'une formule très vaste et complexe. Je n'ai même pas mentionné Kernel Paramètre pour optimiser les performances de la pile TCP et carte réseau, utilisation d'échange, de mémoire ou de compression gzip HTML/CSS, que vous pouvez servir à travers OpenX /si c'est vrai/.

Et oui, comme les autres mentionnés ci-dessus, vos paramètres semblent excessifs et démontrent le manque de compréhension des concepts de base d'optimisation. En d'autres termes, embaucher un professionnel :-/

Alice

Confirmation de:

vous avez 20 Processeurs ou noyaux sur votre voiture? En outre, essayez peut-être des événements avec des valeurs par défaut pour votre OS... peut-être plus de processus fcgi Au lieu de plus nginx... probablement assez pour commencer avec 2-4 nginx Travailleurs ...

Agathe

Confirmation de:

Certainement, trop de travailleurs, comme les personnes déjà mentionnées. Personnellement, je préfère xcache au lieu APC Pour le fonctionnement du code de mise en cache php. Vous devez vérifier la configuration dans une modification centmin auto bash shell nginx/php-fpm install script
http://vbtechsupport.com/796/
/

Giselle

Confirmation de:

Le moyen le plus efficace de rendre le système serveur est beaucoup plus rapide - C'est utilisé Facebook HipHop Virtual Machine /HHVM/ au lieu PHP /PHP plus besoin d'être installé/.

HHVM utilise en amont CPU a "Just in Time Compiler" et effectue généralement le code PHP dans 5-10 fois plus vite que vous-même PHP, Qui vous permet de vous entendre avec un plus petit nombre de serveurs ou de serveurs plus petits et de réduire considérablement la consommation d'énergie. Wikipedia utilisée HHVM Pour réduire la charge sur le serveur CPU dans 5 temps:
http://www.golem.de/news/php-f ... .html
Il peut être installé avec le paquet. Nginx as Linux et inclus dans Nginx très facile que FastCGI, et peu de temps après quelques minutes, il peut être testé à travers un petit fichier "Hello World" PHP:
https://github.com/facebook/hh ... arted
Nouveau PHP7 PHPNG devrait être la vérité, selon les tests de référence, seulement sur 30% plus rapide.

Merci de garder le vote

Pour répondre aux questions, connectez-vous ou registre