Java线程卡住了Wildfly 10.1,消耗了100%CPU(10核)

问题描述 投票:1回答:1

我们最近从Jboss 4迁移到Wildfly 10.1,从Java 1.6迁移到1.8。我们面临着许多有关CPU利用率的问题,例如,下面的线程从最近16小时开始运行并且没有结束。有两个这样的线程,两者都消耗16%的cpu并在增加。

我们使Web应用程序每个请​​求都落在此过滤器上,因为此CPU利用率提高到100%。

在我们的项目中,我们使用java.nio.channels,但是在wildfly上运行时,org.xnio.channels.Channels

在jboss 4上,一切正常,CPU利用率不超过200%。

"default task-39" #252 prio=5 os_prio=0 tid=0x00007f7d8803f800 nid=0x4c8f runnable [0x00007f7e072f2000]
java.lang.Thread.State: RUNNABLE
at org.xnio.channels.Channels.writeBlocking(Channels.java:158)
at io.undertow.servlet.spec.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:283)
at io.undertow.io.BlockingSenderImpl.writeBuffer(BlockingSenderImpl.java:190)
at io.undertow.io.BlockingSenderImpl.send(BlockingSenderImpl.java:71)
at io.undertow.server.handlers.resource.CachedResource.serve(CachedResource.java:187)
at io.undertow.servlet.handlers.DefaultServlet.serveFileBlocking(DefaultServlet.java:332)
at io.undertow.servlet.handlers.DefaultServlet.doGet(DefaultServlet.java:180)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at com.eko.framework.MifosNGFilter.doNormal(MifosNGFilter.java:283)
at com.eko.framework.MifosNGFilter.doFilter(MifosNGFilter.java:121)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at com.eko.framework.CrossScriptingFilter.doFilter(CrossScriptingFilter.java:48)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at com.eko.framework.URLSessionFilter.doFilter(URLSessionFilter.java:38)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.mifos.framework.security.util.FileNameFilter.doFilter(FileNameFilter.java:59)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

我们只是执行基本的过滤器,线程没有结束。以下是Java代码:

public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) throws IOException, ServletException {


    String reqUri = ((HttpServletRequest) req).getRequestURI();
    String reqMethod = ((HttpServletRequest) req).getParameter("method");
    String requestText = ((HttpServletRequest) req).getParameter("requestText");
    String originatioAddress = ((HttpServletRequest) req).getParameter("originationAddress");

    Date requestTime = new Date();
    HttpSession httpSession = ((HttpServletRequest) req).getSession(false);
    UserContext userContext = null;
    if (httpSession != null) {
        userContext = (UserContext) httpSession
                .getAttribute(Constants.USERCONTEXT);
    }

    try {

        HttpServletResponse resp = (HttpServletResponse) res;

        resp.setHeader("Cache-Control","no-store"); 
        resp.setHeader("Pragma","no-cache"); 
        resp.setDateHeader ("Expires", -1);
        resp.setHeader("X-Powered-By", null);
        resp.setHeader("SET-COOKIE", "JSESSIONID=" + ((HttpServletRequest) req).getSession().getId() 
                 +
                 "; _ga=" + 
                ((HttpServletRequest) req).getSession().getAttribute("_ga")
                + "; Path=" + 
        ((HttpServletRequest) req).getContextPath()      
                +
                 "; httpOnly; secure;" );

        doNormal(chain, req, res);

    }
    catch (Throwable t) {
        logger.warn(t, t);
    }
}

private void doNormal(FilterChain chain, ServletRequest req,
        ServletResponse res) throws ServletException {
    try {
        chain.doFilter(req, res);
    }
    catch (Throwable t) {
        logger.error(t, t);
        throw new ServletException(t);
    }
}
java jboss wildfly servlet-filters wildfly-10
1个回答
0
投票

[您是否尝试在禁用http2选项的情况下运行Wildfly?请执行此操作,然后检查问题是否已解决。

© www.soinside.com 2019 - 2024. All rights reserved.