GNT sans publicité, site mobile, fonctionnalitées exclusives...

conserver en memoire des librairies

Le
Lascap
Salut,

Je travaille depuis quelques temps déjà sur un CMS maison. J'en suis à
optimiser le tout pour des charges importantes (on a des estimations
prévues de 20 000 connexions / heure le lundi matin et plus).

Je travaille sur le cache, bien entendu, mais il y a un autre point qui
me permettrait des performances appréciables:
A chaque début de script, je charge un certain nombre de librairies,
fonctions, classes, etc.. qui sont le noyau de mon système. J'aimerais,
puisque ce sont des fichiers que j'inclue systématiquement, les inclure
encore plus systématiquement, et si possible les conserver en mémoire
pour éviter les ouvertures fermetures enregistrement mémoire Comment
pourrais-je faire??

Je vois d'ici deux solutions, sans vraiment savoir comment les mettre en
oeuvre.

- "compiler" une fois pour toute mon noyau, mais est-ce que ça implique
forcément de le réécrire en C ou en C++ ???
- trouver le moyen (apache, zend???) de faire en sorte qu'au démarrage
du serveur, toutes ces fonctions soient chargées en mémoire. (sachant
que c'est un serveur dédié.)

Merci,
Lascap
Lire les 6 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pascal (Collectours)
Le #702263
Lascap wrote:

Salut,

Bonjour;


Je travaille depuis quelques temps déjà sur un CMS maison. J'en suis à
optimiser le tout pour des charges importantes (on a des estimations
prévues de 20 000 connexions / heure le lundi matin et plus).

Je travaille sur le cache,


Cache de page ou cache d'opcodes ?

bien entendu, mais il y a un autre point qui
me permettrait des performances appréciables:
A chaque début de script, je charge un certain nombre de librairies,
fonctions, classes, etc.. qui sont le noyau de mon système. J'aimerais,
puisque ce sont des fichiers que j'inclue systématiquement, les inclure
encore plus systématiquement, et si possible les conserver en mémoire
pour éviter les ouvertures fermetures enregistrement mémoire... Comment
pourrais-je faire??
Utiliser un cache d'opcodes (apc, turck mmcache (attention, n'est plus

maintenu depuis la version 2.4.6 - il utilise les segments de mémoire
partagée - ca marche bien mais c'est un peu chatouilleux en cas d'includes
recursifs (utiliser require_once)).
Cordialement
Pascal

marc.quinton-PAS-DE-
Le #702258
Lascap wrote:


- "compiler" une fois pour toute mon noyau, mais est-ce que ça implique
forcément de le réécrire en C ou en C++ ???
- trouver le moyen (apache, zend???) de faire en sorte qu'au démarrage
du serveur, toutes ces fonctions soient chargées en mémoire. (sachant
que c'est un serveur dédié.)


il existe des caches pour le code et les différences de perfo sont
particulierement drastiques. Mais j'ai jamais essayé.


sinon, j'avais l'idée de sérailiser un ensemble de classes embarquées
dans la classe principale de mon application ; à la costruction, tout
comme un cache, tu va voir si le fichier de sérialisation (ou via une
variable de session) existe ou pas et tu fais suivant le cas :

1 - les construction ordinaire + serialisation dans un fichier
ou
2 - lecture et unserialisation pour remonter toutes tes classes avec
trictement le meme etat.

reste a vérifier :

- quelles classes sont sérialisation ; est-ce qu'une classe ayant une
référence sur un handle de base de donnée fonctionne ?

- si cela gagne effectivement du temps.

Lascap
Le #702254

- si cela gagne effectivement du temps.


mmm. ça implique un fichier par utilisateur simultané du site... et vu
le nombre de classes utilisées, ça fait un gros fichier.... du coup, tu
imagine le nombre de Ko dans le répertoire temporaire, pour un pic de
3000 ou 4000 internautes???

Lascap
Le #702066

Utiliser un cache d'opcodes (apc, turck mmcache (attention, n'est plus
maintenu depuis la version 2.4.6 - il utilise les segments de mémoire
partagée - ca marche bien mais c'est un peu chatouilleux en cas d'includes
recursifs (utiliser require_once)).
Cordialement
Pascal


ok pour les include récursifs, de toute façon ça fait bien longtemps que
je n'utilise plus que des include_once ou des require_once.
Je vais regarder de ce côté là.

et le zend optimiser, il fait pas ça, lui, par hasard???

Antoine
Le #701879
Lascap wrote:
Salut,

Je travaille depuis quelques temps déjà sur un CMS maison. J'en suis à
optimiser le tout pour des charges importantes (on a des estimations
prévues de 20 000 connexions / heure le lundi matin et plus).
<snip>


Bonjour,

Sur wikipedia (~ 200 hit par seconde sur les apaches, 50 Mbit/sec de
traffic total) nous utilisons :

_ turck-mmcache [1] pour cacher le code php.
_ tugela cache [2] pour cacher les requêtes à la base de données en
mémoire et sur les disques dur.


Une solution possible est aussi de coder une extension à php pour
améliorer les performances (dans le cas de wikipedia un parser).



[1] http://turck-mmcache.sourceforge.ne...x_old.html
[2] http://cvs.sourceforge.net/viewcvs....gelacache/


--
Antoine
http://fr.wikipedia.org/
Outlook Express ? Lisez au moins: http://usenetfr.free.fr/faqoe.htm

Publicité
Suivre les réponses
Poster une réponse
Anonyme