About Features Downloads Getting Started Documentation Events Support GitHub

Love VuFind®? Consider becoming a financial supporter. Your support helps build a better VuFind®!

Site Tools


Warning: This page has not been updated in over over a year and may be outdated or deprecated.
administration:performance

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
administration:performance [2016/04/05 05:58] – [PHP Tuning] powerriegeladministration:performance [2019/03/20 11:55] – [PHP Tuning] demiankatz
Line 9: Line 9:
  
 ===== JAVA_OPTIONS ===== ===== JAVA_OPTIONS =====
 +
 +:!: This section refers to VuFind 2.x and earlier, which include Solr 4 or earlier. Starting with VuFind 3.0, Solr 5 is bundled with VuFind, and it uses a different startup routine. To adjust the heap memory size in these versions, simply change the SOLR_HEAP environment variable.
  
 If you are using the included distribution of Jetty, the tuning options are set in the JAVA_OPTIONS environmental variable. You can either set this for the user running the instance of Jetty (recommended) or in /etc/profile. If you are using the included distribution of Jetty, the tuning options are set in the JAVA_OPTIONS environmental variable. You can either set this for the user running the instance of Jetty (recommended) or in /etc/profile.
Line 38: Line 40:
  Could not create the Java virtual machine."  Could not create the Java virtual machine."
  
 +Please note that simply increasing the heap size to a very large one is not recommended, since it may lead to unnecessarily long garbage collection pauses. With very large heaps there's also a caveat: at 32 GB Java switches to a larger pointer size which means that pointers use up more memory than with lower sizes. Therefore it is suggested to keep the heap at below 32 GB or increase it well past it (see
 +[[https://blog.codecentric.de/en/2014/02/35gb-heap-less-32gb-java-jvm-memory-oddities/|this page]]
 +for more information).
 +==== Garbage Collection ====
 +:!: Starting with VuFind 3.0, VuFind includes Solr 5, which does some garbage collection auto-tuning by default; the suggestions below may be less important for these newer releases, and you should probably not tinker with settings unless you have a known problem you are trying to solve.
  
- 
-==== Garbage Collection ==== 
 Garbage collection is how aggressive the JVM is with clearing out unneeded objects. For the purposes of Vufind, parallel garbage collection should work nicely, but read Sun's [[http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html | Tuning Garbage Collection]] for more in-depth information. Garbage collection is how aggressive the JVM is with clearing out unneeded objects. For the purposes of Vufind, parallel garbage collection should work nicely, but read Sun's [[http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html | Tuning Garbage Collection]] for more in-depth information.
  
Line 64: Line 69:
 </code> </code>
  
-Once you have a log file, you can use the [[http://www.tagtraum.com/gcviewer.html|gcviewer]] or [[http://www.alphaworks.ibm.com/tech/pmat|PMAT]] tool to get a visual representation of its contents.  This is very helpful in measuring whether your configuration changes have had a positive impact!+Once you have a log file, you can use the [[https://github.com/chewiebug/GCViewer|gcviewer]] or [[http://www.alphaworks.ibm.com/tech/pmat|PMAT]] tool to get a visual representation of its contents.  This is very helpful in measuring whether your configuration changes have had a positive impact!
  
  
Line 125: Line 130:
 ====== PHP Tuning ====== ====== PHP Tuning ======
  
-On PHP 5.4, installing a PHP cache like [[http://pecl.php.net/package/APC|APC]] can significantly improve performance by reducing the amount of time spent by PHP parsing and compiling code. PHP 5.6 comes with build-In OpCache, which is slightly faster than APC. When upgrading, remember to disable the Apache APC module. OpCache should be configured to 64 MB. +On PHP 5.4, installing a PHP cache like [[http://pecl.php.net/package/APC|APC]] can significantly improve performance by reducing the amount of time spent by PHP parsing and compiling code. PHP 5.6 comes with build-In OpCache, which is slightly faster than APC. When upgrading, remember to disable the Apache APC module. OpCache should be configured to 64 MB. 
 +===== Asset Pipeline =====
  
-If you created a custom moduleremember to create a autoloader_classmap.php by calling  +Starting with VuFind 3.1there is an optional "asset pipeline" which can be used to combine Javascript and/or CSS files together to reduce the number of HTTP requests necessary to load VuFind pagesThis is turned off by default but can be activated using the asset_pipeline setting in [[configuration:files:config.ini|config.ini]].
-[code php] +
-../../vendor/zendframework/zendframework/bin/classmap_generator.php -w +
-[/code] +
-from module directory+
  
 +===== Theme Compiler =====
  
 +Starting with VuFind 4.1, there is a [[administration:command_line_utilities|command-line tool]] known as the "theme compiler" which can be run to flatten a hierarchy of themes into a single flat theme, reducing the amount of file searching VuFind needs to do in order to find assets and templates.
  
-===== Troubleshooting =====+To use a compiled theme, follow these steps:
  
-There have been some reports of VuFind errors when running APC Excerpt from the vufind-tech mailing list (courtesy of Graham Seaman):+1Run "php $VUFIND_HOME/public/index.php compile theme [your theme] [your compiled theme]" at the command line.
  
-// +2. Update your [[configuration:files:config.ini|config.ini]] file to use [your compiled theme] instead of [your theme] in the theme setting.
-Inserting the line in index.php +
-//+
  
-<code php+Note: NEVER EDIT THE COMPILED THEME. Instead, edit the source theme and recompile it when you need to make changes. You must use the --force switch of the compiler if you need to overwrite your compiled theme with a new version. 
-register_shutdown_function('session_write_close');+ 
 +===== Session Handling ===== 
 + 
 +When using database sessions, deleting expired sessions may be a surprisingly heavy process. On a busy site it may be beneficial to turn off PHP's session garbage collection (set session.gc_probability to 0 in php.ini) and run VuFind's expire_sessions utility regularly. This makes sure that garbage collection is done outside Apache that serves user requests and with a method that makes it possible to handle session deletion in a large table.  
 + 
 +====== Apache Tuning ====== 
 + 
 +===== GZIP Compression ===== 
 + 
 +For a productive environment, you should always enable GZIP compression using [[https://httpd.apache.org/docs/2.4/mod/mod_deflate.html|mod_deflate]]. This reduces a amount of data transferred by 70% for text based files like html, js, ... To do so,  
 + 
 +<code bash
 +sudo a2enmod deflate
 </code> </code>
 +You should now notice a shrinked transmitted file size in Firefox Developer Tools. You can configure which files are compressed in 
 +<code bash>
 +/etc/apache2/mods-enabled/deflate.conf
 +</code>
 +
 +Note that the "application/json" type is not usually compressed by default, but turning on GZIP compression for this can significantly approve performance, especially if you use [[indexing:hierarchies_and_collections|hierarchies and collections]].
  
-// +===== Minification =====
-immediately before requiring the session handler, seems to fix the problem with APC. Since this is the result of trawling the web and not of any deep understanding on my part, I can't guarantee this won't have sideffects (I'll report back if I find any), or that it will always work. +
-//+
  
-Note: As of VuFind 1.4, the default VuFind code will register the shutdown functionso this modification should no longer be necessary.+One thing you should also do is minifying JS and CSS filesThis removes whitespaces and line breaks. It can by done by your IDE. Netbeans for example has a plugin Js CSS Minify Compress. The minified files must be configured in theme.config.php and in some cases in the theme files. Just search for ".js" and replace with ".min.js". If you use LESS to create your CSS filesthere is an option --clean-css which optimizes your CSS, too.
  
 +:!: Manual minification should not be necessary if you turn on VuFind's built-in asset pipeline (see above).
 ====== Solr Tuning ====== ====== Solr Tuning ======
  
Line 221: Line 240:
 See the [[configuration:remote_marc_records|Remote MARC Records]] page for details on reducing index size by storing MARC records externally to your Solr index. (Note: requires VuFind 2.5 or newer). See the [[configuration:remote_marc_records|Remote MARC Records]] page for details on reducing index size by storing MARC records externally to your Solr index. (Note: requires VuFind 2.5 or newer).
  
 +===== Limits =====
 +
 +Certain operating system limits can impact Solr performance, and starting with release 7.3.1, the software will warn you if you are below the recommended thresholds. See the [[administration:starting_and_stopping_solr#linux_method|Linux startup instructions]] for notes on how to correct this problem.
 ===== Further Reading ===== ===== Further Reading =====
  
   * [[administration:solr_replication|Solr Replication]] - Basic information about making Solr highly available with replication in the context of VuFind.   * [[administration:solr_replication|Solr Replication]] - Basic information about making Solr highly available with replication in the context of VuFind.
 +  * [[administration:fault_tolerance_and_load_balancing|Fault Tolerance and Load Balancing]] - Fault tolerance and load balancing strategies with VuFind.
   * [[http://wiki.apache.org/solr/SolrPerformanceFactors|Solr Wiki - Performance Factors]] - Pros and cons of various Solr configuration options; also linked to other helpful wiki pages.   * [[http://wiki.apache.org/solr/SolrPerformanceFactors|Solr Wiki - Performance Factors]] - Pros and cons of various Solr configuration options; also linked to other helpful wiki pages.
   * [[http://groups.google.com/group/solrmarc-tech/browse_thread/thread/fe329385bb1dc953|solrmarc-tech indexing time thread]] - A discussion which goes into detail on several significant Solr settings.   * [[http://groups.google.com/group/solrmarc-tech/browse_thread/thread/fe329385bb1dc953|solrmarc-tech indexing time thread]] - A discussion which goes into detail on several significant Solr settings.
administration/performance.txt · Last modified: 2022/05/06 12:52 by demiankatz