|
|
|
UNS
|
Bonjour
Après de nombreuses recherches je bloque sur quelques problèmes que je viens vous soumettre en espérant trouver de l’aide. J’ai actuellement un site sous (Zope 2.9.8-final, python 2.4.4) avec un python 2.4.4. Le site tourne sur un zeocluster avec 4 instances de prod à 3 thread chacune, plus une cinquième pour l’administration (en mode debug). Toutes les instances partagent la même base Zope, le même data.fs sur le disque du serveur, un serveur apache 2 en frontal gerant le balancing etre les instances et un cookie “sticky_route” servant pour la redirection d’un utilisateur toujours vers la bonne instance, celle sur laquelle il s’est connecté. Nous utilisation l’authentification SSO (CAS) avec le module PloneCASLogin 2.5.0. Configuration Apache : ## Default Virtual Host Configuration Listen xxx.xxx.xxx:80 NameVirtualHost xxx.xxx.xxx:80 <VirtualHost xxx.xxx.xxx:80> ServerName xxx.xxx.xxx ServerAdmin xxx@xxx.xxx <Proxy balancer://lb> BalancerMember http://xxx.xxx.xxx:8080 route=8080" BalancerMember http://xxx.xxx.xxx:8081 route=8081" BalancerMember http://xxx.xxx.xxx:8082 route=8082" BalancerMember http://xxx.xxx.xxx:8083 route=8083" </Proxy> # conditional proxy pass ProxyPass / balancer://lb/VirtualHostBase/http/xxx.xxx.xxx:80/plone/VirtualHostRoot/ stickysession=STICKY_ROUTE #LOGS #LogLevel debug ServerAlias * CustomLog /opt/apache2/xxx.xxx.xxx.log combined </VirtualHost> Comme nous avions malgré tout de temps en temps des soucis d’utilisateurs rooté vers la mauvaise instance nous avons aussi partagé le même temporary_folder entre toutes les instances. Ainsi quand un utilisateur se connecte il est connecté sur les 4 instances en même temps. Seulement voilà, cela provoque ce message d’erreur d’après mon event.log : 2008-11-26T10:45:23 INFO ZPublisher.Conflict ConflictError at /VirtualHostBase/http/XXXXX.fr:80/XXXX/VirtualHostRoot/Cours/Cours.XXXXX.4424/fichiersan_XXXXX.2530/cours_supports_affichage: database conflict error (oid 0x2571, class BTrees._OOBTree.OOBTree, serial this txn started with 0x037a24a416ae79bb 2008-11-26 09:40:05.315987, serial currently committed 0x037a24a95ee0d788 2008-11-26 09:45:22.237099) (1 conflicts (0 unresolved) since startup at Wed Nov 26 10:43:19 2008) et ceci d’après mon error_log dans plone Request URL http://XXXXXX.fr/Members/XXXXX/Cours/Cours.XXXXX.4648/cours_attacher_template Exception Type database conflict error (oid 0x1247, class BTrees._OOBTree.OOBTree, serial this txn started with 0x037a1ffe66682b66 2008-11-25 13:50:24.001620, serial currently committed 0x037a1ffeae62ca44 2008-11-25 13:50:40.871695) Exception Value database conflict error (oid 0x1247, class BTrees._OOBTree.OOBTree, serial this txn started with 0x037a1ffe66682b66 2008-11-25 13:50:24.001620, serial currently committed 0x037a1ffeae62ca44 2008-11-25 13:50:40.871695) Traceback (innermost last): * Module Zope2.App.startup, line 173, in zpublisher_exception_hook * Module ZPublisher.Publish, line 121, in publish * Module Zope2.App.startup, line 240, in commit * Module transaction._manager, line 96, in commit * Module transaction._transaction, line 380, in commit * Module transaction._transaction, line 378, in commit * Module transaction._transaction, line 436, in _commitResources * Module ZODB.Connection, line 665, in tpc_vote * Module ZEO.ClientStorage, line 893, in tpc_vote * Module ZEO.ClientStorage, line 877, in _check_serials ConflictError: database conflict error (oid 0x1247, class BTrees._OOBTree.OOBTree, serial this txn started with 0x037a1ffe66682b66 2008-11-25 13:50:24.001620, serial currently committed 0x037a1ffeae62ca44 2008-11-25 13:50:40.871695) D’après ce que je comprend, il y a un conflit de ma base de données lorsque l’on veut accéder à un objet, vu que ce n’est apparu qu’après le partage du temporary_forlder je suppose que c’est lié. Y a-t-il un moyen de faire disparaître cette erreur ou dois je arrêter le partage ? Y a-t-il un inconvénient à ce partage ? Autre chose j’ai capté ce message d’erreur, toujours dans le event.log : 2008-11-26T10:45:28 ERROR PortalTransforms Cannot register transform lynx_dump, using BrokenTransform: Error Unable to find binary "lynx" in /opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin Mon souci c’est que je ne comprend pas à quel moment il cherche à accéder à Lynx ? Pas de trace d’une erreur lié à lynx dans le error_log de mon plone. Enfin mon dernier souci mais de loin le plus ennuyeux ! Par moment, sans raison apparente, sans avoir reçu aucun message ou signal, une instance s’arrête, puis des fois quelques minutes ou quelques heures plus tard une autre ... il suffit d’arrêter le serveur Zeo et de le relancer via un terminal pour que tout reparte sans souci. Il peut parfois se passer plusieurs jours avant que ce problème ne revienne, mais il reviens malgré tout. Mon serveur a actuellement 12 Go de RAM, 8 processeurs à peine utilisé, mais la RAM est saturée à 98 %, python prend en moyenne 1 à 2 Go mais j’ai beaucoup de process httpd pouvant prendre chacun jusqu’à 2.5 Go qui tourne que je n’arrive pas à identifier, ne sachant pas si c’est lié à Zope ou pas ? Merci ! |
||||||||||||||||
|
Jérôme Petazzoni
|
Bonjour,
> Comme nous avions malgré tout de temps en temps des soucis d’utilisateurs > rooté vers la mauvaise instance nous avons aussi partagé le même > temporary_folder entre toutes les instances. Ainsi quand un utilisateur se > connecte il est connecté sur les 4 instances en même temps. > > Seulement voilà, cela provoque ce message d’erreur d’après mon event.log : > > 2008-11-26T10:45:23 INFO ZPublisher.Conflict ConflictError at > /VirtualHostBase/http/XXXXX.fr:80/XXXX/VirtualHostRoot/Cours/Cours.XXXXX.4424/fichiersan_XXXXX.2530/cours_supports_affichage: > database conflict error (oid 0x2571, class BTrees._OOBTree.OOBTree, serial > this txn started with 0x037a24a416ae79bb 2008-11-26 09:40:05.315987, serial > currently committed 0x037a24a95ee0d788 2008-11-26 09:45:22.237099) (1 > conflicts (0 unresolved) since startup at Wed Nov 26 10:43:19 2008) > (En dessous d'un message par minute, ça n'est pas trop fréquent.) En effet, s'il y a une erreur de conflit, Zope est supposé rejouer tout seul la transaction (et au second passage, en général, elle passe). Cela peut avoir des effets de bord dans certaines situations : par exemple s'il y a des intéractions avec « le reste du monde », et que ces intéractions ne sont pas gérées de manière transactionnelle. Un cas d'école est l'envoi de mail : 1) le Zope commence à traiter la requête, 2) il envoie un mail dans le cadre du traitement, 3) il continue à traiter la requête, 4) et là, paf ! une ConflictError. Il retourne donc à l'étape 1) ... ... Ce qui provoque l'envoi de mails en double. (Il y a bien entendu des solutions pour éviter cela, mais on s'écarte un peu du sujet ;-)) > 2008-11-26T10:45:28 ERROR PortalTransforms Cannot register transform > lynx_dump, using BrokenTransform: Error > Unable to find binary "lynx" in > /opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin > > Mon souci c’est que je ne comprend pas à quel moment il cherche à accéder à > Lynx ? Pas de trace d’une erreur lié à lynx dans le error_log de mon plone. > Au lancement du Zope, l'initialisation de Plone (plus précisément, de PortalTransforms) recherche un certain nombre d'outils, permettant de convertir, par exemple, les fichiers HTML en texte, ou en PDF. Lynx est un de ces outils (transformation du HTML en texte, je suppose dans ce cas). L'erreur est a priori sans effet, sauf si l'on cherche effectivement à utiliser PortalTransforms pour transformer du HTML en texte - auquel cas on doit avoir d'autres erreurs par la suite. Mais je n'ai jamais utilisé cela, donc je ne peux pas vraiment détailler davantage. > Enfin mon dernier souci mais de loin le plus ennuyeux ! Par moment, sans > raison apparente, sans avoir reçu aucun message ou signal, une instance > s’arrête, puis des fois quelques minutes ou quelques heures plus tard une > autre ... il suffit d’arrêter le serveur Zeo et de le relancer via un > terminal pour que tout reparte sans souci. Il peut parfois se passer > plusieurs jours avant que ce problème ne revienne, mais il reviens malgré > tout. Mon serveur a actuellement 12 Go de RAM, 8 processeurs à peine > utilisé, mais la RAM est saturée à 98 %, python prend en moyenne 1 à 2 Go > mais j’ai beaucoup de process httpd pouvant prendre chacun jusqu’à 2.5 Go > qui tourne que je n’arrive pas à identifier, ne sachant pas si c’est lié à > Zope ou pas ? > 1. Concernant le Zope lui-même, si on ne dispose pas de quantités infinies de mémoire, il peut être judicieux de le relancer de temps à autres. On peut utiliser monit, par exemple, pour lui dire de relancer une instance Zope dès qu'elle occupe plus d'une quantité donnée de mémoire. Lorsqu'on utilise un setup ZEO, avec en frontal un loadbalancer comme pound, on peut même se permettre de relancer les instances « ni vu ni connu », et pound s'occupera de tout (il arrêtera d'envoyer des requêtes vers les instances qui ne répondent plus, mais tentera régulièrement de les recontacter pour les ré-inclure dans le roundrobin). 2. Une instance de 1 à 2 Go ça n'est pas choquant, en revanche, des processus httpd, ça, c'est bizarre. S'agit-il de la taille de l'image en mémoire, ou de la RAM réellement utilisée ? Dans le "top" sous Linux, VIRT indique la taille de l'image (et peut-être très élevé sans que ça pose un problème), tandis que RES indique la taille résidente (la RAM réellement utilisée). Pour nos frontaux web (Apache dirigeant vers quelques centaines d'instances Zope), on a typiquement 1 giga de VIRT mais à peine 20 megas de RES, à titre indicatif. HTH, -- Jérôme Petazzoni - [hidden email] Pilot Systems - 9, rue Desargues - 75011 Paris Tel : +33 1 44 53 05 55 - http://www.pilotsystems.net Hébergement Zope et Plone gratuit - http://www.objectis.org _______________________________________________ Plone-FR mailing list [hidden email] http://lists.plone.org/mailman/listinfo/plone-fr |
||||||||||||||||
|
Youenn Boussard-2
|
In reply to this post
by UNS
Le 26 nov. 08 à 17:40, UNS a écrit : > > Bonjour > > Après de nombreuses recherches je bloque sur quelques problèmes que > je viens > vous soumettre en espérant trouver de l’aide. > > J’ai actuellement un site sous (Zope 2.9.8-final, python 2.4.4) avec > un > python 2.4.4. Le site tourne sur un zeocluster avec 4 instances de > prod à 3 > thread chacune, plus une cinquième pour l’administration (en mode > debug). > Toutes les instances partagent la même base Zope, le même data.fs > sur le > disque du serveur, un serveur apache 2 en frontal gerant le > balancing etre > les instances et un cookie “sticky_route” servant pour la > redirection d’un > utilisateur toujours vers la bonne instance, celle sur laquelle il > s’est > connecté. > Nous utilisation l’authentification SSO (CAS) avec le module > PloneCASLogin 2.5.0. > > Configuration Apache : > ## Default Virtual Host Configuration > Listen xxx.xxx.xxx:80 > NameVirtualHost xxx.xxx.xxx:80 > <VirtualHost xxx.xxx.xxx:80> > ServerName xxx.xxx.xxx > ServerAdmin [hidden email] > <Proxy balancer://lb> > BalancerMember http://xxx.xxx.xxx:8080 route=8080" > BalancerMember http://xxx.xxx.xxx:8081 route=8081" > BalancerMember http://xxx.xxx.xxx:8082 route=8082" > BalancerMember http://xxx.xxx.xxx:8083 route=8083" > </Proxy> > # conditional proxy pass > ProxyPass / > balancer://lb/VirtualHostBase/http/xxx.xxx.xxx:80/plone/ > VirtualHostRoot/ > stickysession=STICKY_ROUTE > #LOGS > #LogLevel debug > ServerAlias * > CustomLog /opt/apache2/xxx.xxx.xxx.log combined > </VirtualHost> > > > Comme nous avions malgré tout de temps en temps des soucis > d’utilisateurs > rooté vers la mauvaise instance nous avons aussi partagé le même > temporary_folder entre toutes les instances. Ainsi quand un > utilisateur se > connecte il est connecté sur les 4 instances en même temps. > > > Seulement voilà, cela provoque ce message d’erreur d’après mon > event.log : > > 2008-11-26T10:45:23 INFO ZPublisher.Conflict ConflictError at > /VirtualHostBase/http/XXXXX.fr:80/XXXX/VirtualHostRoot/Cours/ > Cours.XXXXX.4424/fichiersan_XXXXX.2530/cours_supports_affichage: > database conflict error (oid 0x2571, class BTrees._OOBTree.OOBTree, > serial > this txn started with 0x037a24a416ae79bb 2008-11-26 09:40:05.315987, > serial > currently committed 0x037a24a95ee0d788 2008-11-26 09:45:22.237099) (1 > conflicts (0 unresolved) since startup at Wed Nov 26 10:43:19 2008) > > et ceci d’après mon error_log dans plone > > Request URL > > http://XXXXXX.fr/Members/XXXXX/Cours/Cours.XXXXX.4648/cours_attacher_template > Exception Type > database conflict error (oid 0x1247, class BTrees._OOBTree.OOBTree, > serial this txn started with 0x037a1ffe66682b66 2008-11-25 > 13:50:24.001620, > serial currently committed 0x037a1ffeae62ca44 2008-11-25 > 13:50:40.871695) > Exception Value > database conflict error (oid 0x1247, class BTrees._OOBTree.OOBTree, > serial this txn started with 0x037a1ffe66682b66 2008-11-25 > 13:50:24.001620, > serial currently committed 0x037a1ffeae62ca44 2008-11-25 > 13:50:40.871695) > > Traceback (innermost last): > * Module Zope2.App.startup, line 173, in zpublisher_exception_hook > * Module ZPublisher.Publish, line 121, in publish > * Module Zope2.App.startup, line 240, in commit > * Module transaction._manager, line 96, in commit > * Module transaction._transaction, line 380, in commit > * Module transaction._transaction, line 378, in commit > * Module transaction._transaction, line 436, in _commitResources > * Module ZODB.Connection, line 665, in tpc_vote > * Module ZEO.ClientStorage, line 893, in tpc_vote > * Module ZEO.ClientStorage, line 877, in _check_serials > > ConflictError: database conflict error (oid 0x1247, class > BTrees._OOBTree.OOBTree, serial this txn started with > 0x037a1ffe66682b66 > 2008-11-25 13:50:24.001620, serial currently committed > 0x037a1ffeae62ca44 > 2008-11-25 13:50:40.871695) > > D’après ce que je comprend, il y a un conflit de ma base de données > lorsque > l’on veut accéder à un objet, vu que ce n’est apparu qu’après le > partage du > temporary_forlder je suppose que c’est lié. Y a-t-il un moyen de faire > disparaître cette erreur ou dois je arrêter le partage ? Y a-t-il un > inconvénient à ce partage ? instance et se trouve en RAM. > ConflictError: database conflict error (oid 0x1247, class > BTrees._OOBTree.OOBTree, serial this txn started with > 0x037a1ffe66682b66 > 2008-11-25 13:50:24.001620, serial currently committed > 0x037a1ffeae62ca44 > 2008-11-25 13:50:40.871695) l'objet oid 0x1247 est modifié par deux zeoclients en simultanée Une transaction a été commencé sur un client et l'autre a commité pendant ce temps là. Bref la transaction échoue. Si il y en a beaucoup cela peut être enbetant et remonté à l'utilisateur final. http://plope.com/Books/2_7Edition/Sessions.stx#2-55 Generally, session data objects attempt to provide application-level conflict resolution to reduce the limitations imposed by conflict errors NOTE: to take advantage of this feature, you must store your transient object container in a storage such as FileStorage or TemporaryStorage which supports application-level conflict resolution. Bref c'est pas une bonne idée de partager le TemporaryFolder folder. Le problème à la base est que apache ne fait pas son boulot avec loadbalencer. > > > Autre chose j’ai capté ce message d’erreur, toujours dans le > event.log : > > 2008-11-26T10:45:28 ERROR PortalTransforms Cannot register transform > lynx_dump, using BrokenTransform: Error > Unable to find binary "lynx" in > /opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/ > bin > > Mon souci c’est que je ne comprend pas à quel moment il cherche à > accéder à > Lynx ? Pas de trace d’une erreur lié à lynx dans le error_log de mon > plone. > > Enfin mon dernier souci mais de loin le plus ennuyeux ! Par moment, > sans > raison apparente, sans avoir reçu aucun message ou signal, une > instance > s’arrête, puis des fois quelques minutes ou quelques heures plus > tard une > autre ... il suffit d’arrêter le serveur Zeo et de le relancer via un > terminal pour que tout reparte sans souci. Il peut parfois se passer > plusieurs jours avant que ce problème ne revienne, mais il reviens > malgré > tout. Mon serveur a actuellement 12 Go de RAM, 8 processeurs à peine > utilisé, mais la RAM est saturée à 98 %, python prend en moyenne 1 à > 2 Go > mais j’ai beaucoup de process httpd pouvant prendre chacun jusqu’à > 2.5 Go > qui tourne que je n’arrive pas à identifier, ne sachant pas si c’est > lié à > Zope ou pas ? Un telnet sur le zeoclient donne quoi quand ça arrive Y a t'il pas des sockets en time-wait. Les 3 thread des zeoclients ne sont t'il pas okp a faire de opération lourde. Peut être augmenter le nombre de thread d'ailleurs vu la bête de course. > > -- > View this message in context: http://n2.nabble.com/Probl%C3%A8mes-de-performances-Plone-Zeocluster-tp1581493p1581493.html > Sent from the Plone - France mailing list archive at Nabble.com. > > > _______________________________________________ > Plone-FR mailing list > [hidden email] > http://lists.plone.org/mailman/listinfo/plone-fr INGENIWEB (TM) - SAS 50000 Euros - RC B 438 725 632 1, rue Royale 227, Les Bureaux de la Colline - Bat D 92213 - Saint Cloud Cedex Tél : 01 78 15 24 00 / Fax : 01 46 02 44 04 _______________________________________________ Plone-FR mailing list [hidden email] http://lists.plone.org/mailman/listinfo/plone-fr |
||||||||||||||||
| Free Embeddable Forum Powered by Nabble | Help |