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é.)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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-
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 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 ?
- "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
- 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 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???
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
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???
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???
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???
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 !
- 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???
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 !
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).
-- Antoine http://fr.wikipedia.org/ Outlook Express ? Lisez au moins: http://usenetfr.free.fr/faqoe.htm
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).
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).