Je fais beaucoup de performances et de travail d'évolution et ce que j'ai découvert, c'est que:
Chaque charge d'application est unique
Les réponses génériques comme ajouter plus de RAM, obtenir un autre serveur, faire y, essayer x sont souvent des leçons de frustration et laisser aux configurations alambiquées.
Mesurer les bonnes choses
L'un des plus grands défis consiste à déterminer quels repères sont importants. Cela nécessite souvent un pas en arrière et vous devez vous mettre à la place de votre client. Parfois, la conception simplifiée du site change et signifie d'énormes avantages pour le visiteur Web. C'est pourquoi j'aime les outils comme YSlow! qui se concentrent davantage sur l'expérience de l'utilisateur final plutôt que sur le niveau du serveur. Une fois que vous avez décidé quelle est la bonne référence pour votre site, vous pouvez commencer à l'optimiser. Les repères peuvent être le temps total de chargement de la page, la taille totale de la page, l'efficacité du cache, la latence du site, etc. Vous devez choisir celui qui convient à votre application.
Écrous et boulons
Celui que vous suivez les bons repères, commencez à un niveau très bas. J'aime utiliser sysstat. Vous pouvez obtenir une multitude d'informations de sysstat et vous aider à déterminer quel système peut limiter les performances globales de l'application. Généralement, je résume les problèmes de performances dans:
- pile réseau
- pile de mémoire
- disque io
- couche d'application
- couche os
À l'aide de sysstat et d'autres outils, vous pouvez commencer à diviser les cheveux et trouver le système qui limite les performances.
Par exemple, j'ai vu des serveurs très chargés échouer en raison de la configuration de leur application. Une mauvaise mise en cache, le manque d'en-têtes expirés sur le contenu statique, l'utilisation de HTTP par rapport aux inclusions de fichiers, etc. ont toutes contribué aux mauvaises performances de l'application. La résolution de ces problèmes d'application n'a nécessité aucune modification matérielle. Dans d'autres cas, j'ai vu les disques au maximum malgré des tonnes de mise en cache. Le passage à des disques plus rapides a résolu le problème.
Rincer et répéter
Souvent, lors du réglage des applications, vous déboucherez un goulot d'étranglement pour n'en trouver qu'un autre. C'est pourquoi je recommande d'essayer de surveiller ce que vous syntonisez.
Par exemple, supposons que vous résolviez un problème d'E / S disque mais que votre application soit toujours lente. Vous pensez peut-être que vous avez gaspillé vos efforts, mais ce qui se passe, c'est que vous avez simplement frappé un autre goulot d'étranglement. En surveillant attentivement les E / S de disque, vous pouvez être sûr que vous améliorez les E / S de disque même si vos analyseurs de performances d'application importants ne changent pas.
Obtenez les bons outils
Assurez-vous que vous utilisez les bons outils pour le travail. La surveillance, les tests, l'analyse comparative, le profilage et d'autres techniques d'optimisation disposent tous d'une variété d'outils. Trouvez l'outil qui correspond le mieux à votre situation.
Règles de base
Bien que chaque application soit unique, je trouve certains points de départ standard:
- bases de données de mémoire aiment la mémoire
- disque io tout sauf raid 10 peut tuer les performances de la base de données
- mauvaises optimisations - les grandes valeurs ne se traduisent pas par de grandes performances
- application - blâmer le serveur pour la mauvaise conception de l'application
Vos prochaines étapes
Si vous ne trouvez pas votre goulot d'étranglement, l'ajout d'un serveur peut ne pas aider beaucoup. Pour résoudre les E / S sur disque, vous pouvez avoir besoin d'un autre serveur ou SAN. Si vous avez un goulot d'étranglement, un autre serveur résoudra le problème uniquement en ce qu'il ajoute plus de RAM. Déplacement assez coûteux par rapport à l'ajout de plus de RAM à votre serveur existant.
Solution rapide
Plus de déploiement. J'ai dû faire cela quand il semble que la pile d'applications soit le problème. Charge essentiellement le CPU, la RAM et le disque IO (RAID 10, 15K SCSI ou SSD). Allez gros sur le matériel, puis commencez à régler. Cela vous maintient à flot jusqu'à ce que vous résolviez les problèmes.