TSG has had two recent clients deploy Alfresco 5. After stabilizing the environments to handle the proper production load, we gathered a list of tips and tricks that have helped improve performance for Alfresco 5 around transformation and Microsoft SQL Server. For clients familar with Alfresco 4, we have found making some small changes within client configurations in Alfresco 5 can result in a substantially improved performance. The remainder of this post will serve as a suggested checklist for consideration when deploying Alfresco 5.
Thumbnail Generation for Share Previews
One large difference between Alfresco 4 and 5 relates to content transformations. By default, Alfresco 5 will try to create a thumbnail of any document as soon as it is created in the repository. If you are using Alfresco Share, you will need these thumbnails. For clients that have built their own interface or are using our HPI interface, thumbnails are unnecessary, and the generation only adds load to the system and utilizes unnecessary storage space. In one extreme case, the thumbnail generation was causing our client’s external Transformation Server to grind to a halt during the migration of content to the new environment. (Note that the external Alfresco Transformation Server is a separate product offered by Alfresco.) For another client, thumbnail generation was significantly slowing down a large scale content migration from a legacy system into Alfresco.
TSG’s recommendations: if you do not need to view content thumbnail within Share, disable thumbnail generation. If you are performing a large scale migration, temporarily disable thumbnail generation during the migration process. In order to disable thumbnail transformations, simply add the following to alfresco-global.properties and restart Alfresco:
Arbitrary Image Renditions Generated by External Transformation Server
For our client with the external Alfresco Transformation Server, we noticed PDF files that were sent to the external Transformation Server were getting transformed into numerous image renditions. Because PDF is a universal format, we did not need the image renditions for normal client scenarios. Alfresco has three main content transformers when the external Transformation Server is configured: the Transformation Server, the out-of-the-box JOD converter and the out-of-the-box OpenOffice converter. Each category of transformers handles different types of transformations. The JOD converter typically handles image transformations, the OpenOffice converter handles Office document transformers (especially when the external Transformation Server is not deployed), and the external Transformation Server handles complex Office document transformations, including transformations of Outlook emails. Take care when configuring the properties below in case you do need image transformations in certain scenarios. The following lines can be added to alfresco-global.properties to prevent any documents (including PDFs) from being converted to various image types:
The general format of these properties is:
content.transformer.<TRANSFORMER USED>.extensions.<STARTING EXTENSION>.<ENDING EXTENSION>.supported
# Disable image transformations by the external Transformation Server
# Disable image transformations by the JOD converter
# Disable all image transformations for all converters
In the first and second section of properties, we are explicitly preventing image conversions for each specific converter (the external Transformation Server or the JOD converter, respectively). The final section of properties disables all image transformations. Choose the options that make the most sense for your setup – you will likely only need one section of properties.
Microsoft SQL Server
If you are using Microsoft SQL Server for the Alfresco database, there are two vital steps you should take BEFORE starting Alfresco for the first time after you install. First, transaction isolation must be enabled on your SQL database or Alfresco will not function. If Alfresco is started for the first time before transaction isolation is enabled on your database, you will have to reinstall Alfresco. In addition, the following property in alfresco-global.properties should be set:
We made the mistake of not setting this property in a client environment. We had transaction isolation enabled on the database, but without setting
db.txn.isolation set properly, we were seeing the database grind to a halt due to poor transaction handling.
Another lesson learned was using the correct supported service pack from Alfresco, which is currently SP1 (with the latest being SP2). Be sure to check the Alfresco documentation for the latest supported version before installing. Lastly, with that in mind, it is always useful to review the Alfresco documentation in order to make sure all settings and configurations are optimized as much as possible:
Of course this list is not exhaustive and will not solve all performance issues. Let us know any of your own tips and tricks below in the comments.