configuration Java et mémoire RAm disponible

cancel
Showing results for 
Search instead for 
Did you mean: 
jean
Member II

configuration Java et mémoire RAm disponible

Bonjour,
Je reviens encore avec un problème…

Hardware: Fujitsu Siemens Quad Core 3.00GHz
RAM: 5 GB

Etat de la mémoire lorsque Alfresco est stoppé:

root@SMALF001:/var/log# free -g -m
             total       used       free     shared    buffers     cached
Mem:          5229       3714       1515          0        213       2881
-/+ buffers/cache:        619       4609
Swap:         7627          6       7620
root@SMALF001:/var/log#
Etat de la mémoire lorsque Alfresco est démarré:
root@SMALF001:/var/log# free -g -m
             total       used       free     shared    buffers     cached
Mem:          5229       5192         37          0        212       2918
-/+ buffers/cache:       2060       3168
Swap:         7627          6       7620
root@SMALF001:/var/log#
Mon utilisation Alfresco
Il est prévu de mettre en ligne la documentation de nos client pour que ceux-ci puissent la consulter, après s'être loggués sur leur compte Alfresco personnel.
A terme, ceux-ci pourront également déposer des fichiers dans un endroit qui leur sera dédié.
Un script tourne 1 fois par semaine pour synchroniser le contenu de l'un de nos serveurs windows, sur le serveur Alfresco (synchro effectuée via CIFS avec un script robocopy)
La quantité de données est d'environ 4 GB lors de la première copie.
Ensuite, seul le différentiel est recopié ( robocopy /MIR …)

Problème: évidemment, on peut voir dans la consommation mémoire qu'il y a un problème… Qui se traduit dans les logs par le genre de message suivant:
   limits: {timeoutMs=120000, maxPages=-1, readLimitKBytes=-1, maxSourceSizeKBytes=-1, pageLimit=1, readLimitTimeMs=-1}
        at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:188)
        at org.alfresco.repo.content.transform.FailoverContentTransformer.transformInternal(FailoverContentTransformer.java:170)
        at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:171)
        … 85 more
Caused by: java.lang.OutOfMemoryError: Java heap space
10:30:30,235 ERROR [org.alfresco.repo.activities.feed.AbstractFeedGenerator] Exception during generation of feeds
java.lang.IllegalStateException: lockToken is not null
        at org.alfresco.repo.activities.feed.AbstractFeedGenerator$LockTracker.refreshLock(AbstractFeedGenerator.java:231)
        at org.alfresco.repo.activities.feed.AbstractFeedGenerator.acquireLock(AbstractFeedGenerator.java:210)
        at org.alfresco.repo.activities.feed.AbstractFeedGenerator.execute(AbstractFeedGenerator.java:161)
        at org.alfresco.repo.activities.feed.FeedGeneratorJob.execute(FeedGeneratorJob.java:50)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:563)
Dans ces conditions, j'arrive à me logguer sur le tableau de bord administrateur ou utilisateur sans trop de problème. Mais ensuite, dès que je clique sur un site qui contient de la documentation, je suis éjecté de l'interface web, avec des "timeout" et autre "Java errors"… Il est bien clair que je suis à court de RAM.

Etant donné que la doc dit que le paramétrage par défaut devrait suffire pour la plupart des cas de figure, je n'ai pas encore modifié mon fichier de paramétrage Java:

root@SMALF001:/opt/alfresco-4.0.d/tomcat/bin# cat setenv.sh.ORIG
JAVA_HOME=/opt/alfresco-4.0.d/java
JRE_HOME=/opt/alfresco-4.0.d/java
JAVA_OPTS="$JAVA_OPTS "
export JAVA_HOME
export JRE_HOME
export JAVA_OPTS
root@SMALF001:/opt/alfresco-4.0.d/tomcat/bin#

J'ai essayé ensuite de modifier ce fichier selon les directives données dans: http://wiki.alfresco.com/wiki/JVM_Tuning
En suivant le paragraphe:
JVM Settings
General Case

For most cases, tuning the JVM is done in five steps:

    Throw as much RAM as possible at the JVM (-Xmx32GB),
    Set the stack to 1MB (-Xss1024k),
    Set the perm gen to 256M (-XX:MaxPermSize:256m),
    Ensure the "server" VM is used (-server),
    Don't add any other configuration settings.

Be aware that to avoid memory swapping, -Xmx should never exceed the available RAM in the system. Remember to leave room for memory used by the OS and other applications like OpenOffice via JOD (JOD often uses 1GB of RAM per OO instance).
In general, if you don't give the JVM enough heap, playing with other JVM settings will not help. Once the JVM has enough heap, playing with other JVM settings won't make much of a difference. The 1.6 JVM is generally excellent at memory optimization and should be allowed to function.

Etat de mon fichier après la modif:
root@SMALF001:/opt/alfresco-4.0.d/tomcat/bin# cat setenv.sh
JAVA_HOME=/opt/alfresco-4.0.d/java
JRE_HOME=/opt/alfresco-4.0.d/java
JAVA_OPTS="-server
-Xss1024K
-Xms256M
-Xmx1GB
-XX:MaxPermSize=256M"

export JAVA_HOME
export JRE_HOME
export JAVA_OPTS
root@SMALF001:/opt/alfresco-4.0.d/tomcat/bin#
Avec cette config, Tomcat ne démarre même pas…
Le log de tomcat


Invalid maximum heap size: -Xmx1GB
Could not create the Java virtual machine.
Si je remets la config par défaut, le serveur redémarre, avec le message suivant:
[org.alfresco.service.descriptor.DescriptorService] Alfresco JVM - v1.6.0_22-b04; maximum heap size 910.250MB
S'agit-il du maximum de mémoire trouvé et utilisé automatiquement par la JVM ? (d'où le message "invalid maximum heap size: -Xmx1GB" mentionné plus haut ?)
Celà veut-il dire que je n'ai pas assez de RAM disponible sur ce serveur pour faire tourner Alfresco correctement ?

Dernière tentative de redémarrage avec le fichier de conf Java non modifié. Je peux me logguer admin mais ensuite, dès que je clique sur un site qui contient des documents (pdf, word…)
je me fais éjecter de l'interface web et la mémoire se trouve dans cet état:
15:20:25,484 WARN  [org.alfresco.repo.activities.post.lookup.PostLookup] Still busy …

Caused by: org.alfresco.service.cmr.repository.ContentIOException: 02270063 Content conversion failed:
   reader: ContentAccessor[ contentUrl=store://2012/3/23/19/59/af9ee290-51a1-4a80-92da-fd793a181676.bin, mimetype=application/pdf, size=2376208, encoding=UTF-8, locale=fr_CH]
   writer: ContentAccessor[ contentUrl=store:///opt/alfresco-4.0.d/tomcat/temp/Alfresco/ComplextTransformer_intermediate_pdf_7584512636522201893.png, mimetype=image/png, size=0, encoding=UTF-8, locale=fr_CH]
   options: {targetContentProperty=null, contentReaderNodeRef=null, contentWriterNodeRef=null, imageResizeOptions=ImageResizeOptions [width=100, height=100, maintainAspectRatio=true, percentResize=false, resizeToThumbnail=false, allowEnlargement=false], sourceContentProperty=null, includeEmbedded=false, imageCropOptions=null, commandOptions=, imageAutoOrient=true}
   limits: {timeoutMs=120000, maxPages=-1, readLimitKBytes=-1, maxSourceSizeKBytes=-1, pageLimit=1, readLimitTimeMs=-1}
        at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:188)
        at org.alfresco.repo.content.transform.ComplexContentTransformer.transformInternal(ComplexContentTransformer.java:255)
        at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:171)
        … 85 more
Caused by: org.alfresco.service.cmr.repository.ContentIOException: 02270062 Content conversion failed:
   reader: ContentAccessor[ contentUrl=store://2012/3/23/19/59/af9ee290-51a1-4a80-92da-fd793a181676.bin, mimetype=application/pdf, size=2376208, encoding=UTF-8, locale=fr_CH]
   writer: ContentAccessor[ contentUrl=store:///opt/alfresco-4.0.d/tomcat/temp/Alfresco/FailoverTransformer_intermediate_PdfBoxPdfToImageContentTransformer_5325793497109153698.png, mimetype=image/png, size=0, encoding=UTF-8, locale=fr_CH]
   options: {targetContentProperty=null, contentReaderNodeRef=null, contentWriterNodeRef=null, imageResizeOptions=ImageResizeOptions [width=100, height=100, maintainAspectRatio=true, percentResize=false, resizeToThumbnail=false, allowEnlargement=false], sourceContentProperty=null, includeEmbedded=false, imageCropOptions=null, commandOptions=, imageAutoOrient=true}
   limits: {timeoutMs=120000, maxPages=-1, readLimitKBytes=-1, maxSourceSizeKBytes=-1, pageLimit=1, readLimitTimeMs=-1}
        at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:188)
        at org.alfresco.repo.content.transform.FailoverContentTransformer.transformInternal(FailoverContentTransformer.java:170)
        at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:171)
        … 87 more
Caused by: java.lang.OutOfMemoryError: Java heap space
15:22:33,908 ERROR [org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl] Failed to execute asynchronous action: Action[ id=a0fce0a4-e9b8-49c5-8d7b-b57cd62be8c6, node=null ]
org.alfresco.error.AlfrescoRuntimeException: 02270057 Creation of thumbnail 'doclib' failed
        at org.alfresco.repo.thumbnail.CreateThumbnailActionExecuter.executeImpl(CreateThumbnailActionExecuter.java:186)
        at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute(ActionExecuterAbstractBase.java:196)
        at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(ActionServiceImpl.java:780)
        at org.alfresco.repo.action.ActionServiceImpl.executeActionImpl(ActionServiceImpl.java:700)
        at org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl$ActionExecutionWrapper$1$1.execute(AsynchronousActionExecutionQueueImpl.java:403)
        at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:388)
        at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:259)
        at org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl$ActionExecutionWrapper$1.doWork(AsynchronousActionExecutionQueueImpl.java:412)
        at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:519)
        at org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl$ActionExecutionWrapper.run(AsynchronousActionExecutionQueueImpl.java:415)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Caused by: org.alfresco.service.cmr.repository.ContentIOException: 02270056 Content conversion failed:
   reader: ContentAccessor[ contentUrl=store://2012/3/23/19/58/38448fe7-895f-4b33-8012-38ccf622c954.bin, mimetype=application/pdf, size=2376195, encoding=UTF-8, locale=fr_CH]
   writer: ContentAccessor[ contentUrl=store://2012/3/27/15/19/31eb13e7-7742-4770-9d16-cc8839a81882.bin, mimetype=image/png, size=0, encoding=UTF-8, locale=fr_CH]
   options: {targetContentProperty=null, contentReaderNodeRef=null, contentWriterNodeRef=null, imageResizeOptions=ImageResizeOptions [width=100, height=100, maintainAspectRatio=true, percentResize=false, resizeToThumbnail=false, allowEnlargement=false], sourceContentProperty=null, includeEmbedded=false, imageCropOptions=null, commandOptions=, imageAutoOrient=true}
   limits: {timeoutMs=120000, maxPages=-1, readLimitKBytes=-1, maxSourceSizeKBytes=-1, pageLimit=1, readLimitTimeMs=-1}
        at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:188)
        at org.alfresco.repo.content.ContentServiceImpl.transform(ContentServiceImpl.java:589)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
        at net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:80)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.alfresco.repo.model.ml.MLContentInterceptor.invoke(MLContentInterceptor.java:125)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:46)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:147)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at $Proxy52.transform(Unknown Source)
        at org.alfresco.repo.rendition.executer.AbstractTransformationRenderingEngine.render(AbstractTransformationRenderingEngine.java:120)
        at org.alfresco.repo.rendition.executer.AbstractRenderingEngine.executeRenditionImpl(AbstractRenderingEngine.java:504)
        at org.alfresco.repo.rendition.executer.AbstractRenderingEngine$1.doWork(AbstractRenderingEngine.java:428)
        at org.alfresco.repo.rendition.executer.AbstractRenderingEngine$1.doWork(AbstractRenderingEngine.java:408)
        at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:519)
        at org.alfresco.repo.rendition.executer.AbstractRenderingEngine.executeImpl(AbstractRenderingEngine.java:407)
        at org.alfresco.repo.rendition.executer.AbstractRenderingEngine.executeImpl(AbstractRenderingEngine.java:369)
        at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute(ActionExecuterAbstractBase.java:196)
        at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(ActionServiceImpl.java:780)
        at org.alfresco.repo.action.ActionServiceImpl.executeActionImpl(ActionServiceImpl.java:700)
        at org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServiceImpl.java:538)
        at sun.reflect.GeneratedMethodAccessor616.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
        at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:34)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:46)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:147)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at $Proxy37.executeAction(Unknown Source)
        at org.alfresco.repo.rendition.RenditionServiceImpl.executeRenditionAction(RenditionServiceImpl.java:281)
        at org.alfresco.repo.rendition.RenditionServiceImpl.render(RenditionServiceImpl.java:183)
        at org.alfresco.repo.thumbnail.ThumbnailServiceImpl.createThumbnailNode(ThumbnailServiceImpl.java:588)
        at org.alfresco.repo.thumbnail.ThumbnailServiceImpl.access$000(ThumbnailServiceImpl.java:67)
        at org.alfresco.repo.thumbnail.ThumbnailServiceImpl$1.doWork(ThumbnailServiceImpl.java:262)
        at org.alfresco.repo.thumbnail.ThumbnailServiceImpl$1.doWork(ThumbnailServiceImpl.java:259)
        at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:519)
        at org.alfresco.repo.thumbnail.ThumbnailServiceImpl.createThumbnail(ThumbnailServiceImpl.java:258)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
        at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:34)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:46)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:147)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at $Proxy123.createThumbnail(Unknown Source)
        at org.alfresco.repo.thumbnail.CreateThumbnailActionExecuter.executeImpl(CreateThumbnailActionExecuter.java:177)
        … 12 more
Caused by: org.alfresco.service.cmr.repository.ContentIOException: 02270055 Content conversion failed:
   reader: ContentAccessor[ contentUrl=store://2012/3/23/19/58/38448fe7-895f-4b33-8012-38ccf622c954.bin, mimetype=application/pdf, size=2376195, encoding=UTF-8, locale=fr_CH]
   writer: ContentAccessor[ contentUrl=store:///opt/alfresco-4.0.d/tomcat/temp/Alfresco/ComplextTransformer_intermediate_pdf_2938418362726594087.png, mimetype=image/png, size=0, encoding=UTF-8, locale=fr_CH]
   options: {targetContentProperty=null, contentReaderNodeRef=null, contentWriterNodeRef=null, imageResizeOptions=ImageResizeOptions [width=100, height=100, maintainAspectRatio=true, percentResize=false, resizeToThumbnail=false, allowEnlargement=false], sourceContentProperty=null, includeEmbedded=false, imageCropOptions=null, commandOptions=, imageAutoOrient=true}
   limits: {timeoutMs=120000, maxPages=-1, readLimitKBytes=-1, maxSourceSizeKBytes=-1, pageLimit=1, readLimitTimeMs=-1}
        at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:188)
        at org.alfresco.repo.content.transform.ComplexContentTransformer.transformInternal(ComplexContentTransformer.java:255)
        at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:171)
        … 85 more
Caused by: org.alfresco.service.cmr.repository.ContentIOException: 02270054 Content conversion failed:
   reader: ContentAccessor[ contentUrl=store://2012/3/23/19/58/38448fe7-895f-4b33-8012-38ccf622c954.bin, mimetype=application/pdf, size=2376195, encoding=UTF-8, locale=fr_CH]
   writer: ContentAccessor[ contentUrl=store:///opt/alfresco-4.0.d/tomcat/temp/Alfresco/FailoverTransformer_intermediate_PdfBoxPdfToImageContentTransformer_7447055922792587614.png, mimetype=image/png, size=0, encoding=UTF-8, locale=fr_CH]
   options: {targetContentProperty=null, contentReaderNodeRef=null, contentWriterNodeRef=null, imageResizeOptions=ImageResizeOptions [width=100, height=100, maintainAspectRatio=true, percentResize=false, resizeToThumbnail=false, allowEnlargement=false], sourceContentProperty=null, includeEmbedded=false, imageCropOptions=null, commandOptions=, imageAutoOrient=true}
   limits: {timeoutMs=120000, maxPages=-1, readLimitKBytes=-1, maxSourceSizeKBytes=-1, pageLimit=1, readLimitTimeMs=-1}
        at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:188)
        at org.alfresco.repo.content.transform.FailoverContentTransformer.transformInternal(FailoverContentTransformer.java:170)
        at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:171)
        … 87 more
Caused by: java.lang.OutOfMemoryError: Java heap space

Pourriez-vous me conseiller un paramétrage valable pour faire tourner Alfresco sur ce serveur, avec la mémoire dont je dispose ?

Merci d'avance pour votre aide

Jean
8 Replies
dranakan
Active Member

Re: configuration Java et mémoire RAm disponible

Bonjour,

Essayez de changer la configuration plutôt dans /opt/alfresco-4.0.d/tomcat/scripts/ctl.sh (à deux places dans ce fichier).
Sauf erreur, les GB sont définis avec g et non gb.
Par exemple
export JAVA_OPTS="-XX:MaxPermSize=512m -Xms1g -Xmx2g -XX:-DisableExplicitGC …

Pourriez-vous me conseiller un paramétrage valable pour faire tourner Alfresco sur ce serveur, avec la mémoire dont je dispose ?
Je laisse les experts répondrent… (en attendant : http://wiki.alfresco.com/wiki/JVM_Tuning).
jean
Member II

Re: configuration Java et mémoire RAm disponible

Merci pour votre réponse,

Ca va nettement mieux quand on va à l'encontre des conseils donnés dans la doc !!!  ???
Be aware that to avoid memory swapping, -Xmx should never exceed the available RAM in the system. Remember to leave room for memory used by the OS
Bien que m'attendant à retrouver le serveur "au tapis" j'ai tout de même essayé la config. suivante:
-Xmx2048m
On peut constater le changement dans le log:
16:38:01,996 INFO  [org.alfresco.service.descriptor.DescriptorService] Alfresco JVM - v1.6.0_22-b04; maximum heap size 1820.500MB
Et oh miracle ! Je peux non seulement me logguer mais aussi naviguer dans mes sites très chargés en documents.
Alors que logiquement, je m'attendait à retrouver mon serveur swapper à fond…  :?
root@SMALF001:/opt/alfresco-4.0.d# free -g -m
             total       used       free     shared    buffers     cached
Mem:          5229       5040        189          0        177       2343
-/+ buffers/cache:       2519       2709
Swap:         7627          6       7621
root@SMALF001:/opt/alfresco-4.0.d#
Mais pas du tout, et la performance paraît tout à fait acceptable !
En lieu et place du fichier de swap, ce sont les buffers/cache de la machine qui se sont remplis…
j'ai bien peur de ne pas avoir tout "capté", quelqu'un pourrait-il expliquer celà ?

Bonne soirée

Jean
dranakan
Active Member

Re: configuration Java et mémoire RAm disponible

Je ne suis pas gouru Linux (ni gouru tout court) mais il me semble que pour connaître l'espace mémoire disponible il faut regarder le champs free de "+/- buffers/cache.

root@SMALF001:/opt/alfresco-4.0.d# free -g -m
             total       used       free     shared    buffers     cached
Mem:          5229       5040        189          0        177       2343
-/+ buffers/cache:       2519       2709
Swap:         7627          6       7621
root@SMALF001:/opt/alfresco-4.0.d#
Dans votre exemple il resterait encore 2709 mg de libre pour des applications. (attention, Java n'a pas forcément utilisé toute la mémoire qu'il a a disposition Xmx).
jean
Member II

Re: configuration Java et mémoire RAm disponible

Dans votre exemple il resterait encore 2709 mg de libre pour des applications. (attention, Java n'a pas forcément utilisé toute la mémoire qu'il a a disposition Xmx).
Au temps pour moi… Vous avez raison, c'est la 2ème ligne qu'il faut regarder…  Smiley Surprisedops:
Et pour Java, sauriez-vous comment connaître ce qui est réellement utilisé à un moment donné ?

Merci pour vos indications !

Jean
dranakan
Active Member

Re: configuration Java et mémoire RAm disponible

On peut utiliser la commande top. Pour aller plus loin dans les applications Java voir VisualVM.
jeanjot
Active Member

Re: configuration Java et mémoire RAm disponible

Plutot que top, je vous conseilles d'utiliser la commande htop, beaucoup plus pertinente.
rguinot
Customer

Re: configuration Java et mémoire RAm disponible

En effet, -Xmx1G plutot que -Xmx1GB…

En ce qui concerne la RAM :

Mem:          5229       5040        189          0        177       2343
-/+ buffers/cache:       2519       2709
Swap:         7627          6       7621


buffers/cache est géré automatiquement par le kernel en fonction de la RAM libre : caches de filesystem, etc… Ces caches sont utiles, notamment pour les performances de Lucene.  si vous additionez RAM "libre" (189), ainsi que buffers et cached, vous obtenez les 2709 "potentiellement libres".

En outre, si vous voulez privilégier l'usage de RAM plutôt que la swap, je vous suggère d'ajuster la variable kernel vm.swappiness, qui détermine à partir de quel pourcentage de RAM "occupée", le kernel va commencer à swapper des pages. vous pouvez mettre, par exemple, vm.swappiness=2 dans /etc/sysctl.conf, et ensuite exécuter sysctl -p (sous root). La valeur par défaut est de 60, i.e commencer à swapper à partir de 40% d'occupation.

Etc…
jean
Member II

Re: configuration Java et mémoire RAm disponible

Merci beaucoup à tout le monde pour toutes ces infos utiles !

Jean