Performance tuning is always a tricky area as it depends a lot on the
hardware you have available and your use cases. I don't think we have
any specific documentation on how to improve performance of an
islandora install but I can pass on some of the experiences we've had
at the Robertson Library in setting up and maintaining our servers.
Firstly, the VM we distribute is only meant to give users a taste of
what islandora can do and so is designed to work on as many systems as
possible. This means that performance was sacrificed to allow people
to run the VM on low powered systems. If you are planning to
thoroughly test islandora and put it into production then installing
from scratch would be a good way to go. This will give you complete
control over how things are set up, a deeper understanding of how the
stack works and a better idea of where performance improvements can be
made.
A java heap size of 4-8 Gb is usually plenty for a production tomcat
and setting both the upper and lower limits to the same value means
that all of that memory is allocated at the start.
APC certainly helps with the drupal side of things but keep an eye on
the amount of cache being used. We use munin
(http://munin-monitoring.org/) to monitor the fragmentation and memory
usage, as well as various other aspects of the server (load, memory
usage, apache stats, etc).
Another gain can be made by splitting the different components of the
stack out. We often have apache, mysql and tomcat/fedora running on
separate machines which spreads the load and allows each individual
server to be set up for a specific task. We have also noticed an
improvement by putting tomcat/fedora on bare metal rather than a VM.
The bottleneck for fedora is often I/O and performance is improved by
going to a real server from a virtual one.
One way around the problem with slow loading thumbnails is to store
them outside of fedora. This raises the issue of whether you want the
object to be completely self-contained or are happy to have some of
the content stored elsewhere. For thumbnails like the folder icon used
for collections an external reference datastream can be used to point
at an image on the webserver. As this will be the same file for each
occurrence it will mostly served out of cache rather than loading it
each time. For thumbnails that are created upon ingest from the
initial file it is more difficult.
Richard
> --
> You received this message because you are subscribed to the Google Groups
> "islandora" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/islandora/-/0CzYtfIAL3kJ.
> To post to this group, send email to isla...@googlegroups.com.
> To unsubscribe from this group, send email to
> islandora+...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/islandora?hl=en.
On 3/24/12 8:45 AM, "Richard Wincewicz" <richard....@googlemail.com>
wrote:
I don't have a writeup but it's not too difficult to get it set up for
a test. In the Fedora admin client
(http://<ip-address>:8080/fedora/admin) you can create datastreams
manually. To replace the thumbnails with externally referenced images
you would need to delete the existing TN datastreams and create new
ones with a control group of either 'External reference (E)' or
'Redirect (R)'. You add the URL to your resource in the Location field
and then Fedora will serve the thumbnail from the external location
rather than from Fedora. External reference still uses Fedora to
process the request whereas Redirect will redirect the browser to the
external URL. In order to do this automatically on ingest you would
have to change the code for the particular solution pack to save the
generated thumbnail somewhere outside of Fedora. When creating the
Fedora object you would have to check that the thumbnail had been made
correctly and associate the external file with the TN datastream.
Another thing that occurred to me after I sent my previous email was
that, while Virtual Box works well for a free program, there are
commerical offerings that perform better. If you have access to
something like VMWare Fusion then you will probably see a performance
increase over Virtual Box.
Richard
Everything Richard says about the VM we distribute it true... One more thing to note is that, in an effort to make it as portable as possible, it is running a 32-bit OS/hardware. Trying to make it perform well by increasing the RAM, may not be helpful. The OS can't see more than 4GB anyway.
Cheers,
Gervais
--
phil
Mark
On 3/26/12 6:17 AM, "Richard Wincewicz" <richard....@googlemail.com>
Richard
--
phil
A possible solution from one of our tech team:
"If the VM is slow it may be that Fedora is doing a DNS lookup and there is a 5 second timeout for this, so if Fedora can't resolve the DNS things slow way down. One way around this is to configure islandora with IP address and or add DNS entries to the vm images host file. By adding the DNS entry to the host file the DNS lookup will always resolve quickly."
Let me know if that helps.
Mark
We've also turned on all the caching in Drupal. The page loading
seems to be loading fine, as all the admin pages are snappy. It's
only when there are calls to the repo that it starts to bog down.
Even when we browse to the ~fedora/repository page, it takes around
4/6 secs.
Two groups of changes have made a big impact:
1) I set the JAVA_OPTS directly in the fedora start script
(/etc/init.d/fedora), instead of relying on that script to pick up the
environment variables from the fedora user's bash_profile. Here are the
values I am using (borrowed from our production DSpace instance's start
script):
# recommended settings for a production DSpace environment
JAVA_OPTS="-Xmx1024M -Xms768M"JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=128M"
JAVA_OPTS="$JAVA_OPTS -XX:PermSize=32M"
# tweak: use the parallel garbage collector
JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelGC"
# turn on UTF-8 encoding for URLs
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
# turn on the JMX remote management interface so PsiProbe can work
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"
export JAVA_OPTS
2) I changed the caching settings for Djatoka, in this file:
/usr/local/fedora/tomcat/webapps/adore-djatoka/WEB-INF/classes/djatoka.prop
erties
I am using these values:
OpenURLJP2KService.cacheSize=200000
OpenURLJP2KService.cacheImageMaxPixels=600000
Increasing the cacheSize helped with the tiling image viewer's
performance. As did increasing the cacheImageMaxPixels (up from 10000) to
accommodate caching thumbnails (which clock in at 200 x 200 pixels = 40000
pixels).
Sharing this info to the list in case it helps anyone else.
[1] http://code.google.com/p/psi-probe/
--
HARDY POTTINGER <potti...@umsystem.edu>
University of Missouri Library Systems
http://lso.umsystem.edu/~pottingerhj/
https://MOspace.umsystem.edu/
"I think I like disruptive technology because
it makes the whole world a bit fuzzy, my
normal state of mind."
-- Robert Llewellyn (aka Kryten)
This in addition to the other tweaks mentioned above make the site
almost snappy. Thanks for the help!
On Wed, Mar 28, 2012 at 2:35 PM, Pottinger, Hardy J.
Priscilla Caplan
FCLA
Richard