2009-01-11 9 views
5

J'ai essayé de comprendre les performances et l'évolutivité et je voudrais savoir ce que font les développeurs/administrateurs système pour gérer leurs systèmes. Afin d'uniformiser les réponses, il serait utile si vous pouviez prendre votre meilleur coup à répondre à une des opérations suivantes:Comment optimiser les performances du serveur?

  1. Profil - Publication du magazine sur Joomla; Conseil de l'emploi sur CodeIgniter + OpenId + AJAX
    • Performance - Demandes maximum par seconde par serveur?
    • Matériel - Serveur, routeur, disque, LAN?
    • Software - Lighttpd, Memcache, vernis, Nginx, Squid, Livre, LVS, eAccelerator, etc.
    • services - Amazon S3, Akamai, Google compute, etc.
    • configuration - statique hachage, module en amont, Memcache pendant x minutes après n demandes, Désactiver la consignation des demandes d'images, etc.
    • Autre - Autre raison? (Par exemple, des tables normalisées mauvais pour les sites avec beaucoup de lit)

Edit: S'il vous plaît re-considérer avant de fermer cette question asitisimportant aux développeurs web de rechercher ce genre de choses. Un programmeur pourrait modifier les points-virgules de son code, mais perdrait quand même un codeur mal écrit pour memcached ou parviendrait à assembler un CDN via Google App Engine.

+0

Ceci est une thèse non une question. – cletus

+0

Ça me va, je suis vraiment intéressé par ce sujet. – Ross

Répondre

2

Je n'ai pas le temps de vous répondre à la question bullet par balle. =) Mais je peux recommander une stratégie générale de séparation des préoccupations et ne pas coupler les ressources du serveur quand il n'y a pas besoin immédiat. mod_proxy (et tous les équivalents) est votre ami. Il est facile de lancer du matériel sur les problèmes de performance qui se présentent. Bien sûr, vous n'avez pas besoin de factoriser parfaitement le système dès le départ (puisqu'il est vraiment difficile d'anticiper où les vrais goulots d'étranglement apparaîtront). Mais quand vous rencontrez des problèmes. Rappelez-vous votre ami.

3

Notre système: Je ne peux pas vous en dire beaucoup, mais c'est une grande application SaaS qui sert de nombreux clients payants. Chaque travail de performance/capacité que nous faisons est fait très soigneusement - nous ne pouvons pas simplement essayer des choses pour voir si elles fonctionnent. Au début, il y aurait une analyse de la performance et de la capacité actuelles, si nous pouvions continuer à travailler de toute façon. Si possible, nous reproduirions les problèmes de performance sur un système hors production, où nous pourrions profiler le code et apporter des modifications expérimentales. Nous ne pouvons pas toujours utiliser exactement le même matériel que la production (la production a un grand nombre de serveurs à très haute spécification, le dev ayant seulement quelques boîtes de test de performance dédiées à la production).Si le problème ne peut pas être analysé de manière significative dans un environnement hors production, nous enverrons de l'instrumentation à notre code en production (après un test minutieux pour s'assurer que l'instrumentation n'a pas d'impact sur le système lui-même). Cette instrumentation serait expédiée "off" et activée sélectivement pour recueillir suffisamment de données. Une fois que nous avions une analyse précise d'un problème, nous examinions des solutions possibles et développions peut-être des prototypes, qui pouvaient être testés pour leur correction fonctionnelle.

Nous optons normalement pour l'option la moins risquée s'il y en a plusieurs.

Le processus de libération normale serait alors suivi - beaucoup de tests, revues de code, etc.

Le cas échéant, le changement peut être livré avec un « revenir interrupteur » qui lui a permis d'être mis hors tension dans la production rapidement si Il y avait un problème.

Nous avons identifié de nombreuses améliorations potentielles des performances, dont la plupart ne se développeront pas avant qu'un problème ne se produise (à moins que nous ne procédions de toute façon à un refactoring indépendant de ce logiciel).

3

Il n'y a pas de plan directeur concret pour l'optimisation des performances (comme démarrer au logiciel "xyz" d'abord).

Approche générale:

  1. Identifier (! Mesure) votre entité la plus improveable par les moyens d'amélioration/temps investi
  2. optimisons
  3. Répétez
Questions connexes