Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openfire因Java错误而崩溃_Java_Linux_Nginx_Chat_Openfire - Fatal编程技术网

Openfire因Java错误而崩溃

Openfire因Java错误而崩溃,java,linux,nginx,chat,openfire,Java,Linux,Nginx,Chat,Openfire,我在我的服务器上运行了一个基于openfire的聊天系统,但是确实发生了很多与openfire java环境相关的崩溃,我已经将java VM内存增加到512MB,但是当服务器负载超过 我没有很多用户,一次只有20,30个,拥有非常强大的8核cpu和32GB内存 我正在运行openfire 3.71。我必须重新启动整个服务器,因为重新启动openfire根本无法解决问题 我在java中遇到的错误是 java.lang.ExceptionInInitializerError at org.

我在我的服务器上运行了一个基于openfire的聊天系统,但是确实发生了很多与openfire java环境相关的崩溃,我已经将java VM内存增加到512MB,但是当服务器负载超过

我没有很多用户,一次只有20,30个,拥有非常强大的8核cpu和32GB内存

我正在运行openfire 3.71。我必须重新启动整个服务器,因为重新启动openfire根本无法解决问题

我在java中遇到的错误是

java.lang.ExceptionInInitializerError
    at org.jivesoftware.admin.LoginLimitManager.getInstance(LoginLimitManager.java:48)
    at org.jivesoftware.openfire.admin.login_jsp._jspService(login_jsp.java:143)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1216)
    at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:39)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187)
    at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:74)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187)
    at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:50)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187)
    at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:78)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187)
    at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:164)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:425)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:494)
    at org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:182)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:933)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:245)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
    at org.eclipse.jetty.server.Server.handle(Server.java:334)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1007)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:747)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:209)
    at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
    at org.jivesoftware.util.TaskEngine.scheduleAtFixedRate(TaskEngine.java:228)
    at org.jivesoftware.admin.LoginLimitManager.(LoginLimitManager.java:83)
    at org.jivesoftware.admin.LoginLimitManager.(LoginLimitManager.java:33)
    at org.jivesoftware.admin.LoginLimitManager$LoginLimitManagerContainer.(LoginLimitManager.java:39)
    ... 36 more 

这个错误似乎与内存不足没有直接关系——Java中的内存错误通常是错误,或者是指用于永久生成的有限空间等等

另一方面,异常几乎肯定是执行代码中的编程错误。因为在你的情况下,这似乎是在负载下发生的,所以我可以在黑暗中拍摄几张照片:

  • 某些有限资源(如线程池或事件队列)正在耗尽,而使用它的代码不会检查该条件

  • 有一种竞争条件,代码的某些部分会命中未初始化的结构,而这些结构通常由另一个线程在较轻的负载下初始化

  • 有一段时间超时,返回的
    null
    未得到正确处理


请注意,虚拟机可用的内存量可能会影响各种操作的计时,这是由于垃圾回收器的运行频率不同造成的。您可以使用探查器(例如)来判断应用程序是否缺少内存。

我可以为java VM提供的最大内存是多少?因为当我尝试添加超过2GB的内存时,openfire似乎崩溃了,JVM启动了吗?如果虚拟机的容量不超过2GB,那么您可能正在使用32位操作系统或32位JVM,并且在大多数操作系统上,虚拟机的容量都需要64位才能超过2GB……如何检查JVM启动?我要做的是传递-Xms32m-Xmx128m,以便openfire调用更多堆设置,但我不知道如何增加java内存,因为我是java@user1179459新手:我要问的是,当传递时JVM是否会立即崩溃,例如
-Xmx2048m
…不了解JVM,但openfire不会启动,这就是为什么我问你我知道JVM做什么吗?