OVH Cloud OVH Cloud

conserver en memoire des librairies

6 réponses
Avatar
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

6 réponses

Avatar
Pascal (Collectours)
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

Avatar
marc.quinton-PAS-DE-
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.

Avatar
Lascap

- 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???

Avatar
Lascap

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???

Avatar
Marc Quinton


- 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???


si c'est en session oui, si c'est ailleurs non !


Avatar
Antoine
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.net/index_old.html
[2] http://cvs.sourceforge.net/viewcvs.py/wikipedia/tugelacache/


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