Назад | Перейти на главную страницу

Tomcat на порту 80 не работает из-за OutOfMemoryError, в то время как Tomcat на порту 8080 работает

У меня 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 для хостов. Теперь он отлично работает.