Obtenir un nouveau server

Mon patron m'a dit que nous pourrions avoir un nouveau server Web s'il est vraiment nécessaire. Je ne sais pas si cela est vraiment nécessaire, alors j'ai décidé de requestr à ceux qui le savent probablement.

Le site possède l'IIS 6.0 ainsi que l'Apache installé. L'IIS héberge une seule application, qui est une application de vote longue (consum beaucoup de threads).

La machine actuelle est Windows 2003 avec deux CPU (probablement une physique, mais deux logiques).

Nous avons environ 3 000 visiteurs uniques par jour.

Lorsque vous tapez l'adresse et appuyez sur Entrée, il faut parfois plus d'une minute pour une charge initiale.

J'ai essayé d'affiner l'IIS en augmentant les attributes de maxWorkerThreads, MaxIoThreads et d'autres process, mais pas beaucoup.

Y a-t-il une utilisation dans l'obtention d'une meilleure machine? Combien mieux? Aucune suggestion?

Des suggestions qui pourraient aider et ne pas inclure l'achat d'une nouvelle machine?

EDIT: Voici les informations système actuelles

Ordinateur: Intel (R) Xeon (R) CPU 5130 à 2.00 GHz, 2.00 Go de RAM

Système d'exploitation: Microsoft Windows Server 2003, Standard Edition, Service Pack 2

Veuillez me faire savoir si vous avez besoin d'autres informations concernant le système.

Si vous pouvez vous déplacer vers un nouveau server de 6 core ou plus, avec 12 Go de memory moderne, de nouveaux disques, un operating system de server 64 bits plus récent et les dernières versions de toutes vos exigences de code, vous devriez voir environ 2 à 20 fois augmentation de la vitesse globale, peut-être plus en fait.

C'est un peu effronté, mais après avoir vu les problèmes de logiciel de Noob dans cette publication sur StackOverflow, je proposerais réellement de ne plus avoir besoin de mettre à niveau le server. En particulier, comme le noob a mentionné, il ne dépasse pas 50 p.

Le problème auquel vous faites face (je pense) est que vos premières requêtes se déplacent dans le code de callback asynchique de 60 000 ms de votre logiciel.

Je pense que ce que vous devez faire, c'est de changer le logiciel afin que, lors de la première request, vous renvoyiez les résultats directement, pas de surveillance du système de files. Récupérez datatables actuelles et publiez-les aussi vite que vous pouvez get le code pour le faire.

Sur les post-remises asynchronouss, mettez en œuvre votre logiciel tel quel.

Vous pouvez savoir si la page est demandée pour la première fois, ou à la suite d'un return, à l'aide de la propriété Page.IsPostBack .

Cela devrait permettre à vos visiteurs d'get la page dans environ 1-5 secondes de ce que j'ai vu de votre code, puis maintenez les returns de callback asynchronouss pour le timeout d'attente de 60 secondes.

Des excuses pour le détournement d'un thread de défaut de server avec une réponse stackoverflow = (

  1. Découvrez votre goulot d'étranglement, vérifiez l'utilisation du processeur, la RAM, le réseau, les E / S de disque
  2. Existe-t-il une database pour cette application, est-elle locale sur le server / sur le réseau ou sur un réseau distant?

Postez cette information pour une meilleure rétroaction des autres.

Il ne me semble pas que vous avez une charge suffisamment élevée en raison de la circulation.

Je verrais d'abord s'il y a quelque chose que je peux faire pour améliorer le code derrière ou savoir ce qui ralentit vraiment les choses. Une minute de réponse indique habituellement un time d'exécution prolongé. L'achat d'un nouveau server immédiatement peut-être vous-même dans le pied. Un nouveau server peut ou non améliorer vos performances par beaucoup.

Je vérifie également votre connection au server si vous testez à distance et que ce n'est pas sur un LAN / Localhost et que vous obtenez de tels timeouts de réponse.

Ces jours-ci, les gens sont plus susceptibles de reorder une mise à jour matérielle (une façon plus économique et plus facile) qui est tout à fait correct. Cependant, il est important de voir si nous avons fait tout le rest, de sorte qu'une mise à niveau matérielle en profiterait davantage.

Si vous ne pouvez pas vraiment réparer l'application (ou cela semble bon) pour une raison quelconque ou toutes les optimizations ont été faites, et le réseau semble correct, votre seul choix est de mettre à niveau un matériel pour lequel vous devez voir l'utilisation de votre ressource pour une charge de page . Le server utilise-t-il plus de memory ou de CPU? Il est possible que d'autres applications soient en concurrency pour les ressources, pouvez-vous démarrer le moniteur ressources / performances et voir le model?

espérons que cela vous aidera à faire plus de choses à vérifier

N'achetez pas une grosse boîte

Le service Web (à la différence de la portion de la database) bénéficie beaucoup plus de l'ajout de nombreux petits servers au lieu d'un grand server – et puisque vous exécutez déjà beaucoup d'interrogations sur HTTP, cela est particulièrement vrai. De plus en plus, les problèmes deviennent ceux du nombre de connections ouvertes, du nombre de process en cours d'exécution, de la taille des tampons de réseau, du taux auquel le système peut basculer des contexts ….

Donc, sortir et dépenser, disons que $ 4k sur 2 servers vous apporteront une solution beaucoup plus rapide que de dépenser beaucoup plus sur un seul server.

Il y a un énorme avantage supplémentaire – dire que la disponibilité de votre server est de 99% – en supposant qu'il n'y ait pas de dependencies partagées, la disponibilité pour 2 nœuds est de 100 à 100 * (0,01 * 0,01) = 99,99% – il est presque cent fois plus fiable.

Bien qu'il soit possible que vous puissiez accélérer votre système actuel en l'accordant, nous devrions savoir beaucoup plus sur la nature de la charge de travail et la configuration actuelle, et même alors il faudrait beaucoup de travail et de test pour get un solution optimale – il y a quelques bons livres sur le sujet – allez lire certains d'entre eux.

Cela dit, parfois, la mise à niveau (ou de preference l'ajout) du matériel est la seule solution – et souvent elle peut être la solution la plus rentable avant que vous n'eussiez épuisé l'effort d'accord.