Je cherche des moyens d'optimiser notre serveur web actuel hébergé en interne. J'essaie de fournir autant pertinent informations ci-dessous. Veuillez me faire savoir si vous avez besoin d'informations supplémentaires afin de pouvoir vous aider.
Le serveur gère un seul site web, qui est une plateforme de commande de pizzas en ligne construite sur Zend Framework (ver1). Les statistiques de trafic du mois dernier font état d'environ 6 000 pages par jour, principalement à l'heure du dîner. Environ 1500 chargements/heure en pointe pendant cette période.
Nous sommes récemment passés d'une ligne aDSL 2/2mbit à une fibre 100/100mbit, et nous avons toujours des problèmes de performance au moment du dîner. Nous avons supposé que le 2mbit était le problème. Le site Web est assez rapide dans les périodes de faible charge.
Matériel informatique
CPU: Intel(R) Xeon(R) CPU 5160 @ 3.00GHz (3000.13-MHz K8-class CPU)
Mem: 328M Active, 4427M Inact, 891M Wired, 244M Cache, 623M Buf, 33M Free
Swap: 16G Total, 468K Used, 16G Free
(6GB physical, 16GB swap)
Filesystem Type Size Used Avail Capacity Mounted on
/dev/ad7s1a ufs 4.8G 768M 3.7G 17% /
devfs devfs 1.0K 1.0K 0B 100% /dev
/dev/ad7s1g ufs 176G 5.2G 157G 3% /home
/dev/ad7s1e ufs 4.8G 2.8M 4.5G 0% /tmp
/dev/ad7s1f ufs 19G 3.5G 14G 19% /usr
/dev/ad7s1d ufs 4.8G 550M 3.9G 12% /var
Système d'exploitation du serveur
FreeBSD 8.2-RELEASE
Logiciel
apache-2.2.17
php5-5.3.8
mysql-server-5.5
Empreinte d'Apache (exemple, tiré de # top)
31140 www 1 45 0 377M 41588K lockf 2 0:00 0.00% httpd
31122 www 1 44 0 375M 35416K lockf 2 0:00 0.00% httpd
31109 www 1 44 0 375M 38188K lockf 2 0:00 0.00% httpd
31113 www 1 44 0 375M 35188K lockf 2 0:00 0.00% httpd
Apache utilise le MPM prefork, APC (Alternative PHP Cache). Le module SSL est chargé, mais n'est pas utilisé (c'est-à-dire qu'il ne fonctionne pas vraiment, et n'est donc pas utilisé). Il existe un fichier contenant les paramètres des modules MPM, mais comme je le vois, il n'est pas inclus dans le fichier httpd.conf, la ligne include est commentée. Je suppose donc que le module MPM prefork fonctionne également avec des valeurs par défaut.
Voici quelques autres valeurs de conf Apache que j'ai trouvées - qui sont incluses dans https.conf
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
UseCanonicalName Off
HostnameLookups Off
Chargement en cas de problèmes de performance
Remarque : les requêtes API vers le backend
Quant à notre plateforme en ligne, elle communique avec notre système backend via une API (GET/POST). Pour les devis sur les paniers (mis en cache jusqu'à ce qu'un nouvel article soit ajouté), les produits (mis en cache), les prix sur les produits (mis en cache). Et le serveur dorsal montre une charge réelle lorsque des problèmes de performance apparaissent sur le web. J'en déduis donc que ce sont les requêtes API qui prennent un temps fou pour être complétées, retardant ainsi les clients sur le serveur web. Ma question est donc la suivante : les statistiques données ci-dessus (trafic/charge) et la configuration actuelle du logiciel sont-elles comparées aux spécifications de l'API ? Par rapport aux spécifications de la connexion internet et du matériel, est-ce que ce sont les signes d'un serveur stressé ? Et serais-je en mesure d'augmenter le nombre maximum de clients sur le serveur web, en fonction des ressources disponibles et de l'empreinte réelle d'Apache ?