1 votes

Optimiser Apache - dois-je utiliser APC / nginx ?

J'ai lu de nombreux articles concernant l'optimisation d'Apache. Au cours de ma lecture, deux noms revenaient sans cesse, nginx y php-apc .

J'ai essayé de comprendre lesquelles d'entre elles pourraient m'être utiles, mais je n'ai pas trouvé de réponse définitive. Mon serveur doit supporter environ 10 000 connexions. Le serveur dispose de 5 Go de mémoire vive et de 4 processeurs.

  1. Ma question est la suivante : lequel des deux, le cas échéant, dois-je utiliser ?
  2. Dois-je modifier mon code pour mieux utiliser les APC y nginx ?
  3. Est-ce que l'utilisation du nginx va supprimer toutes les capacités du serveur web ?
  4. Est-ce qu'il me manque quelque chose ? Y a-t-il quelque chose de fondamental qui m'échappe ?

Info Apache :

[root@web conf]# httpd -V
Server version: Apache/2.2.3
Server built:   Sep  3 2009 17:38:51
Server's Module Magic Number: 20051115:3
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   32-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

Merci !

EDITAR

Le site sera utilisé pour diffuser des vidéos en utilisant flash-rtmp pour diffuser les vidéos et php (cake) et js pour tout le reste.

3voto

GioMac Points 4331

L'apc agit comme un module PHP, tandis que nginx est un serveur web et travaille avec php via une interface cgi. En bref, la configuration d'un serveur web n'est pas une tâche facile et la plateforme à choisir dépend de beaucoup de choses. 10k connexions - qu'est-ce que cela signifie, 10k téléchargements parallèles ? Si la vidéo est livrée sous forme de fichiers sur le même serveur, il ne devrait pas y avoir de problème avec Apache. Il vaut mieux penser aux entrées/sorties de disque et à la mise en réseau, si vous traitez la vidéo, je suis sûr que le CPU ne peut pas gérer cela. Si vous exécutez ce site php pour supporter le streaming vidéo, géré par l'autre serveur - il n'y aura probablement pas de requêtes massives liées à php, donc vous pouvez le faire avec n'importe quoi, même sans optimisation poussée.

Ma question est la suivante : lequel des deux, le cas échéant, dois-je utiliser ?

  • Vous pouvez utiliser APC dans n'importe quelle situation, mais pour nginx - ça dépend. La configuration par défaut de nginx est plus efficace que celle d'apache httpd, mais après une configuration adéquate, vous pouvez obtenir presque les mêmes résultats avec httpd.

Dois-je modifier mon code pour mieux utiliser APC et nginx ?

  • Pour APC - cela n'a pas d'importance, en utilisant nginx vous perdrez certaines fonctionnalités supplémentaires disponibles dans le serveur web Apache httpd plus commun. Vous aurez peut-être besoin de corriger quelque chose

Est-ce que l'utilisation de nginx va supprimer toutes les capacités du serveur web ?

  • Oui, beaucoup, l'autre question est si vous l'utilisez

Est-ce qu'il me manque quelque chose ? Y a-t-il quelque chose de fondamental qui m'échappe ?

  • Charge de travail actuelle, où se situe le goulot d'étranglement - utilisation du CPU, réseau, connexions, etc. APC réduira l'utilisation du CPU, augmentera l'utilisation de la RAM. http peut être utilisé avec différents modèles. Comme je le vois, vous avez RHEL5/Centos5 apache, 32-bit. Au moins, utilisez le noyau approprié (kernel-PAE) pour utiliser les 5 Go de RAM. Je ne recommanderai pas le modèle actuel d'apache dans votre cas (changez le modèle dans /etc/sysconfig/httpd). Vous pouvez utiliser php à la fois comme module ou via cgi (mod_fcgid).

Ceci est loin des détails de la configuration - il y a beaucoup de choses à configurer, y compris le respawn du processus, etc.

1voto

Rasputnik Points 186

APC est un cache de type bytecode pour PHP, alors que nginx est un serveur web totalement distinct. Cela pourrait aider à clarifier le type de sites que vous envisagez d'utiliser.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X