У меня Linux-сервер (Ubuntu 11.10 x64).
Я запускаю Tomcat на порту 80 с участием корень пользователь. Он имеет только один приложение (около 8Мб). Всякий раз, когда я запускаю кота, я получаю OutOfMemoryError. (Цель этого Tomcat - обрабатывать домены, поддомены и пересылать их соответствующему приложению. Для большей ясности, когда я нажимаю "sub.domain.com", он направляется в приложение "суб")
Забавно то, что на тем же сервер, я создал новый пользователь, и я установил Кот который настроен для работы на порту 8080. Я развернул 3 приложения (всего 40 Mbs), и запускается отлично! Я не могу обрабатывать домены с этим сервером, так как он не работает на порту 80, поэтому мне это не подходит.
Почему это могло произойти? Что я могу сделать, чтобы Tomcat работал на 80-м порту?
Вот вывод журнала tomcat из catalina.out
INFO: JSF1048: PostConstruct/PreDestroy annotations present. ManagedBeans metho ds marked with these annotations will have said annotations processed.
Nov 09, 2012 4:21:26 PM org.primefaces.webapp.PostConstructApplicationEventListe ner processEvent
INFO: Running on PrimeFaces 3.4.RC1
Nov 09, 2012 4:21:26 PM com.sun.faces.config.ConfigureListener$WebConfigResource Monitor$Monitor <init>
INFO: Monitoring jndi:/stk.meselen.com/WEB-INF/faces-config.xml for modification s
Nov 09, 2012 4:21:45 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [19,497] milliseconds.
Nov 09, 2012 4:21:45 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory stk
Nov 09, 2012 4:21:45 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/tomcat7/webapps/stk/WEB-INF/lib/servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Nov 09, 2012 4:21:51 PM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Initializing Mojarra 2.1.7 (SNAPSHOT 20120206) for context '/stk'
Nov 09, 2012 4:21:52 PM com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: PostConstruct/PreDestroy annotations present. ManagedBeans methods marked with these annotations will have said annotations processed.
Nov 09, 2012 4:21:53 PM org.primefaces.webapp.PostConstructApplicationEventListener processEvent
INFO: Running on PrimeFaces 3.4.RC1
Nov 09, 2012 4:21:53 PM com.sun.faces.config.ConfigureListener$WebConfigResourceMonitor$Monitor <init>
INFO: Monitoring jndi:/stk.meselen.com/stk/WEB-INF/faces-config.xml for modifications
Nov 09, 2012 4:21:53 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor host-manager.xml from /etc/tomcat7/Catalina/www.meselen.com
Nov 09, 2012 4:21:53 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor manager.xml from /etc/tomcat7/Catalina/www.meselen.com
Nov 09, 2012 4:21:53 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory stk
Nov 09, 2012 4:21:54 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/tomcat7/webapps/stk/WEB-INF/lib/servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2820)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1150)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2006)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:1969)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1858)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1826)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1812)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1306)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:896)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:322)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5103)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1055)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:978)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1329)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:334)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1041)
А вот вывод ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15675
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 15675
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Я обнаружил, что проблема в том, что 2 хоста используют одну и ту же appBase. поэтому я изменил appBases в server.xml для хостов. Теперь он отлично работает.