web.xml


The web.xml file provides configuration and deployment information for the Yellowfin application. The Yellowfin web.xml file is located in the directory:
Yellowfin\appserver\webapps\ROOT\WEB-INF
A number of installation-specific settings are stored in web.xml when Yellowfin is installed. These settings are critical to Yellowfin starting and running successfully.


Included JSPs

The <ENTITY> line near the top of the file must correctly specify the Yellowfin path as a URL:
<!ENTITY jsps SYSTEM "file:/C:/Program Files/Yellowfin/appserver/webapps/ROOT/WEB-INF/web-jsps.xml">
Or
<!ENTITY jsps SYSTEM "file:/usr/Yellowfin/appserver/webapps/ROOT/WEB-INF/web-jsps.xml">

Configuration Database parameters

The connection parameters for the Yellowfin configuration database must be set correctly in web.xml for Yellowfin to function. These settings are within the <servlet> section named InitConnectionPool. The connection parameters are:

JDBCDriverClass

The name of the JDBC Driver class

Required

JDBCUrl

The JDBC URL to connect to the database

Required

JDBCUser

The username used to connect

Required

JDBCPassword

The password used to connect

Required

JDBCPasswordEncrypted

Whether or not the password in JDBCPassword is encrypted. (true/false)

Optional (Defaults to false)

JDBCMinCount

The minimum number of connections to open to the database

Required

JDBCMaxCount

The maximum number of connections to open to the database

Required

JDBCTimeout

How long a connection may be in use for before being closed (in seconds)

Optional (Defaults to 300)

PSCacheSize

How many Prepared Statements to cache per connection (maximum). Setting this to zero disables Prepared Statement caching.

Optional (Defaults to 20)

For more information, see the Yellowfin Forum post: http://www.yellowfinbi.com/YFForum-Connecting-to-the-Yellowfin-Repository-DB-?thread=105090

General Yellowfin startup parameters

There are a number of general startup parameters that affect various parts of Yellowfin. These settings are within the <servlet> section named MIStartup. The parameters are:

ReportCacheSize

Number of result sets to store in the report result cache

Optional (Defaults to 20)

ReportCacheMaxAge

The maximum age of result sets in the report result cache (in milliseconds)

Optional (Defaults to 24 hours)

BIRTPath

The path to the BIRT support files

Optional

ScanJarFiles

Whether or not to scan for JDBC drivers at startup (true/false)

Optional (Defaults to true)

JDBCDrivers

JDBC driver class names to search for at startup, separated by commas. If ScanJarFiles is false, use this to specify the available drivers.

Optional

Clustering


Clustering allows Yellowfin to be run on multiple servers off the same database. In order to cluster Yellowfin, the following will need to be added into the web.xml file, with your web services information filled in.


<!-- Cluster Management -->
  <servlet>
    <servlet-name>ClusterManagement</servlet-name>  
    <servlet-class>com.hof.mi.servlet.ClusterManagement</servlet-class>  
    <init-param>
      <param-name>ServiceUser</param-name>
      <param-value>admin@yellowfin.com.au</param-value>
    </init-param>
    <init-param>
      <param-name>ServicePassword</param-name>
      <param-value>test</param-value>
    </init-param>
     <init-param>
      <param-name>ServiceAddress</param-name>
      <param-value>/services/AdministrationService</param-value>
    </init-param>
    <init-param>
      <param-name>ServicePort</param-name>
      <param-value>80</param-value>
    </init-param>
    <init-param>
      <param-name>ClusterHosts</param-name>
      <param-value>
         192.168.4.196
      </param-value>
    </init-param>
    <load-on-startup>11</load-on-startup>  
  </servlet>

Clustering will make sure that:

  1. If changes are made to ref codes on one server, all other servers reload their ref codes.
  2. If a view is changed, the old version will be removed from the cache of all servers.
  3. If a new licence is uploaded, all servers are updated.
    Note: You will need to ensure your licence lists all the required hostnames, which you will have to contact Yellowfin for (sales@yellowfin.bi).

Performance Tuning


Other than increasing hardware capacity, e.g. faster CPU and memory allocation, there are a number of ways that Yellowfin can be performance tuned. For more information on capacity and configuration settings please refer to the server capacity white paper.


Web Server connections

The Tomcat WebServer default and maximum connections can be adjusted to enable more concurrent connections although the default settings should handle up to 100 users.

These parameters can be set in the $INSTALL_DIRECTORY \appserver\webapps\ROOT\WEB-INF\web.xml file.

The context in the file is against the servlet 'InitConnectionPool'.

Yellowfin Database connections

The Yellowfin Application server requires a connection to the Yellowfin database server to access the report repository and meta-data. This connection can be tuned to allow more through-put depending on the number of concurrent users expected in your installation.

The database connection default and maximums can be changed in $INSTALL_DIRECTORY\appserver\webapps\ROOT\WEB-INF\web.xml file.

The current defaults are 2 (minimum) and 5 (maximum). Amending this connection limit would help performance.

Note: if Yellowfin performance in an issue then changing the connection parameters may assist. However, you will also have to consider your hardware configuration to ensure that it is setup to support the number of concurrent users you have. Please refer to the server capacity white paper for more information.

Java Virtual Machine (JVM) Heap Size

Yellowfin has hard memory limits that are set in configuration files. The application will never allocate more memory once it reaches these limits, even if the server has more free memory. In some cases this can cause errors if Yellowfin needs more memory.
Instructions for increasing the JVM Max Memory depend on how Yellowfin is started.

Windows Service

When the Yellowfin service is first installed, the memory limits are taken from the Yellowfin\appserver\bin\service.bat file. This file can be modified to provide different defaults, but this will only be read when the service is installed. To modify the memory limits for an existing service, follow this process:

  1. Open the Command Prompt and change to the appserver\bin directory under the Yellowfin installation directory.
  2. Run the command: tomcat8w.exe //ES//Yellowfin

    This will run the service manager for the Yellowfin service. Go to the "Java" tab, and change the "Initial memory pool" and "Maximum memory pool" values:
  3. Restart the Yellowfin service to pick up the changes.

Windows Start Menu

If you start the Yellowfin server from the Windows Start Menu, the memory limits are in the startup batch files.

  1. Shut down Yellowfin
  2. Edit the file Yellowfin\appserver\bin\catalina.bat
  3. Find the section:

    rem Memory limits.
    rem Use these options to set the Java memory limits.
    rem -Xms128m sets the initial Java heap size to 128Mb
    rem -Xmx512m sets the maximum Java heap size to 512Mb
    rem To set memory limits uncomment the following line:
    rem set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m
    
  4. Remove the "rem" from the start of the last line, and change the Xmx option to your desired max memory setting.
  5. Restart Yellowfin to pick up the changes.

Linux/Unix/Mac OSX

If you run Yellowfin on Linux/Unix/Mac OSX, the memory limits are in the startup scripts.

  1. Shut down Yellowfin
  2. Edit the file Yellowfin/appserver/bin/catalina.sh
  3. Find the section:

    # Memory limits.
    # Use these options to set the Java memory limits.
    # -Xms64m sets the initial Java heap size to 64Mb
    # -Xmx256m sets the maximum Java heap size to 256Mb
    #JAVA_OPTS="$JAVA_OPTS -Xms64m -Xmx256m"
    
  4. Uncomment the last line, and change the Xmx option to your desired max memory setting.
  5. Restart Yellowfin to pick up the changes.

For more information on Performance, see the Yellowfin Forum post: http://www.yellowfinbi.com/YFForum-General-questions-on-performance-?thread=104626