1.7. Troubleshooting

This troubleshooting page aims at solving problems you may encounter when installing and starting up eXo Platform. For more discussions, refer to eXo Community Forum.

Failure message: "Cannot find ./bin/catalina.sh"

In Linux, you may get this message when starting eXo Platform:

Cannot find ./bin/catalina.sh
This file is needed to run this program

The reason is you do not have the execute permission on the ./bin/catalina.sh file. To fix this problem, run the command below:

chmod +x ./bin/catalina.sh

Also, make sure you have the execute permission on all .sh files.

Failure message: "Too many open files"

You get this message when starting eXo Platform:

Too many open files ...

The problem often occurs in the Linux system because the limit of file descriptors is set too low. To solve this, increase the limit of file descriptors. Make sure the limit is big enough at both system and user levels:

At system level

  1. Edit the /etc/sysctl.conf file:

    sudo vi /etc/sysctl.conf
  2. Add or modify the following line so that its value is big enough, for example, 200000 or 300000:

    fs.file-max=300000

    Warning

    Be careful when you edit this file. Set the number too small may cause your system malfunction.

  3. Reload your configuration:

    sudo sysctl -p
  4. Test the file descriptor limit:

    sudo cat /proc/sys/fs/file-max

At user level

  1. Edit the /etc/security/limits.conf file:

    sudo vim /etc/security/limits.conf
  2. Add or modify the following line so that its value is big enough, for example 200000 or 300000:

    *	soft	nofile	200000
    *	hard	nofile	200000
  3. Log in again and test the file descriptor limit:

    ulimit -n

Failure message: "Address already in use"

You get this message when starting eXo Platform:

java.net.BindException: Address already in use

The problem occurs when the default port 8080 is already used by another process. To solve it, make sure that the port 8080 is not used by another process, or configure eXo Platform to use another free port.

Checking the port status

Use the following Linux commands:

  • The netstat command in the following example:

    netstat -an | grep 8080

    If it returns "LISTEN", it indicates that the port is busy:

    tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
  • The lsof command to know which process is using the port:

    lsof -Pwn -i4:8080

    It returns some information of the process:

    COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    java    4674 root  417u  IPv4  34070      0t0  TCP *:8080 (LISTEN)

Configuring eXo Platform

You can use another port than 8080 as follows:

  • In Tomcat, edit the $PLATFORM_TOMCAT_HOME/conf/server.xml file and change 8080 into another port, at the following line:

    
    <Connector address="0.0.0.0" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
               enableLookups="false" redirectPort="8443"
               connectionTimeout="20000" disableUploadTimeout="true"
               URIEncoding="UTF-8"
               compression="off" compressionMinSize="2048"
               noCompressionUserAgents=".*MSIE 6.*" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript" />
  • In JBoss, edit the $PLATFORM_JBOSS_HOME/standalone/configuration/standalone-exo.xml file and change 8080 into another port, at the following line:

    
    <socket-binding name="http" port="8080"/>

Note

In addition to the port 8080, eXo Platform may use some others, such as 8009, 8443. You always can manage those ports in the same way as above.

Out Of Memory Error

You get this message when starting eXo Platform:

java.lang.OutOfMemoryError: GC overhead limit exceeded

At the same time the Java process crashes and creates a dump file.

The problem occurs when your Java Virtual Machine runs out of memory. You probably think of the same reason even if you do not get this message, but your eXo Platform instance runs slowly or does not operate well.

To solve it, you should increase memory settings for the Java Virtual Machine. The default settings are fairly enough: -Xms512m -Xmx3g -XX:MaxPermSize=256m if your data is not huge. Otherwise, for example you have thousands of users and store many Gigabytes of documents, you should increase those settings.

It can be done by uncommenting and editing the following lines in the customized script:

EXO_JVM_SIZE_MAX="4g"
EXO_JVM_SIZE_MIN="1g"
EXO_JVM_PERMSIZE_MAX="128m"

A little difference for Windows:

SET EXO_JVM_SIZE_MAX=4g
SET EXO_JVM_SIZE_MIN=512m
SET EXO_JVM_PERMSIZE_MAX=128m

EXO_JVM_SIZE_MAX, EXO_JVM_SIZE_MIN, EXO_JVM_PERMSIZE_MAX respectively is Xms, Xmx and XX:MaxPermSize.

Failure message: "Could not reserve enough space for object heap"

You get this message when starting eXo Platform:

Error occurred during initialization of VM
Could not reserve enough space for object heap

There are two possible causes:

  • The physical memory is not enough to allocate memory for the VM. By default the memory requested by eXo Platform is -Xms512m -Xmx3g -XX:MaxPermSize=256m, then it requires 512 megabytes for Heap memory.

  • You are using a 32-bit Java version on a 32-bit OS, so the Heap size may be limited (less than 2G as recommended by Oracle and IBM).

To solve it, you should decrease memory settings for the Java Virtual Machine. The default settings fit medium size of data. If your data is less, you can use lower settings.

The instructions for setting memory are given in this page already.

See also

Copyright ©. All rights reserved. eXo Platform SAS
blog comments powered byDisqus