You are looking at documentation for an older release. Not what you want? See the current release documentation.
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.
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.
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
Edit the /etc/sysctl.conf
file:
sudo vi /etc/sysctl.conf
Add or modify the following line so that its value is big enough, for example, 200000 or 300000:
fs.file-max=300000
Be careful when you edit this file. Set the number too small may cause your system malfunction.
Reload your configuration:
sudo sysctl -p
Test the file descriptor limit:
sudo cat /proc/sys/fs/file-max
At user level
Edit the /etc/security/limits.conf
file:
sudo vim /etc/security/limits.conf
Add or modify the following line so that its value is big enough, for example 200000 or 300000:
* soft nofile 200000 * hard nofile 200000
Log in again and test the file descriptor limit:
ulimit -n
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"/>
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.
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.
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