2010-09-05 21 views
0

Sur ma machine de développement, mon application a utilisé environ 4 à 6 Mo de mémoire par requête. Après avoir basculé vers une machine de production, ces chiffres sont passés à 21 + Mo par demande, sans amélioration de la vitesse (de 0,30 à 1,2 seconde, ce que j'espérais vraiment améliorer sur ma machine de production). Certaines parties de l'application (comme l'amorçage de la base de données) ont utilisé jusqu'à 271 Ko sur une machine de développement et 2,5 Mo sur celle de production. Je me demande donc quelle pourrait en être la raison. Mon application utilise Zend Framework 1.10.8 (MVC) et Doctrine 2.0beta4 ORM et PDO_MySQL comme un adaptateur de base de données.Dégradation des performances sur une machine de production

Ma machine de développement: Windows 7 32 bits, 1,8 GHz Dual Core, 2 Go de RAM, PHP 5.3.2, Apache 2.2.15, 5.0.7 Mysqlnd-dev (CE Zend Server)

Ma machine de production: CentOS 5.5 64 bits, 2,66 GHz Quad Core, 8 Go de RAM, PHP 5.3.3, Apache 2.2.16, MySQL 5.1.48

De plus, je n'ai pas vraiment trouvé de goulot d'étranglement, c'est comme s'il s'agissait d'une application . S'il vous plaît dites-moi si je devrais fournir des informations supplémentaires.

Mise à jour:
Zend Server, que je l'utilise sur ma machine dev, a Zend Optimizer + et APC activés, et mon sysadmin m'a recommandé que je devrais utiliser eAccelerator, alors j'ai suivi ses conseils. Cependant, sur phpinfo(), je vois ceci:

eAccelerator 0.9.6.1 
Caching Enabled true 
Optimizer Enabled true 
Check mtime Enabled true 
Memory Size   16,777,144 Bytes 
Memory Available  16,772,976 Bytes 
Memory Allocated  4,168 Bytes 
Cached Scripts  0 
Removed Scripts  0 

Est-ce que cela signifie qu'il n'est pas configuré correctement?

+0

pourrait vous tester sur linux 32 bits? – fazo

+0

@fazo Je vais mettre en place une machine virtuelle quand j'ai un peu de temps, si personne d'autre n'a plus de suggestions. –

+0

Je voudrais essayer de garder la machine de développement beaucoup plus proche de la machine de production pour pouvoir déboguer les problèmes avec la machine de débogage. Je suppose que votre problème est 'eAccelerator'. J'ai utilisé 'eAccelerator',' xcache' et 'APC' et bien que' APC' ne soit pas le plus rapide, c'est sûrement le plus stable. Et par stable je veux dire à la fois "ne segfault aléatoirement" et "utilisation linéaire des ressources à la charge de travail". Ajoutez le fait que seul le 'APC' est officiellement supporté par le code source' php' le choix est facile. Si vous pouvez répéter le problème avec 'APC', alors seulement passer plus de temps à enquêter sur le problème. –

Répondre

0

Windows 7 32bit,

CentOS 5.5 64bit,

+0

Est-ce vraiment une si grande différence? Je veux dire, 4-6MB -> 21MB est plus de 100% d'augmentation – Robus

+0

Je me demandais vraiment la même chose. Est-ce que cela signifie que je devrais passer à un système d'exploitation 32 bits pour une meilleure performance, ou est-ce que je manque quelque chose? –

+0

@Gray je le crois. Mais votre question d'ouverture n'est pas claire pour moi. Voulez-vous dire seulement la consommation de mémoire ou les timings aussi? Pourquoi ne profilez-vous pas votre application? 1 seconde est une merde de temps, je ne peux pas croire qu'il n'y a pas certains goulots d'étranglement. Quoi qu'il en soit, pour les frameworks monstrueux et ORMS un opcode cacher est obligatoire, vérifiez ici: http://stackoverflow.com/questions/28716/ –