[英]Openfire Crashing with Java Error
我在服務器上運行的是基於Openfire的聊天系統,但確實發生了與Openfire Java環境相關的大量崩潰,我已經將Java VM內存增加到512MB,但是當服務器負載超過時,它仍然崩潰,
我沒有很多用戶一次只有20,30,而一個非常強大的8核cpu,32 GB內存
我正在運行openfire 3.71。 我必須重新啟動整個服務器,因為重新啟動openfire doenst根本解決了問題。
我在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中的內存錯誤通常是OutOfMemoryError
錯誤,或者是指永久生成之類的有限空間。
另一方面, NullPointerException
異常幾乎可以肯定是所執行代碼中的編程錯誤。 由於在您的情況下,這似乎是在負載下發生的,因此我可以在黑暗中拍攝一些照片:
有一些有限的資源(例如線程池或事件隊列)正在耗盡,並且使用該資源的代碼不會檢查該條件。
有一個競爭條件,其中部分代碼命中未初始化的結構,這些結構通常是在輕負載下由另一個線程初始化的。
超時時間到了,返回null
,然后未正確處理。
請注意,由於垃圾收集器或多或少頻繁運行的影響,VM可用的內存量會影響各種操作的時間。 您可以使用分析器(例如VisualVM )來判斷您的應用程序是否缺少內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.