2024/12/18
One of our customer is using IFS ERP (http://ifsworld.com) software solution for their business. The IFS applications also can be hosted on Oracle WebLogic server and they wanted from us to tune their WebLogic domains and setup monitoring infrastructure with WLSDM for the IFS.
IFS Usecase/Solution:
3.1. Anymore they are able to monitor IFS’s back-end SQL statements and get notifications for the long-running SQLs. We have tuned Oracle SQLs online and improved application performance.
3.2. Anymore our client able to understand IFS infrastructure. IFS highly applies EJB Business Method Invocation for their back-end operations and services. Our client receives notifications about IFS EJB methods and able to get performance report for their EJB invokes. We can understand which business module has weak performance.
3.3. Before WLSDM, they always restart the whole IFS system without understanding what’s the exact problem. Anymore, they are able to restart the exact problematic module by monitoring WLSDM Health dashboard and following WLSDM health notifications for their IFS domain.
3.4. Our clients developing, customizing and generating new features on their IFS system continuously. But they were unable to understand new deployed customization performance. Anymore, they are getting below notifications for the weak SQLs and other kind of back-end operations. For instance, below notification is a back-end JDBC Statement Execute type and its cost is 358sec. This means, the new SQL must be tuned.
By getting below SMTP(email) notifications/alarms we understand what is going on the IFS WebLogic domain.
For the below STUCK thread error, we gave timeout for the relevant transactions and transformed IFS WebLogic domain more strong, healthy and responsive.
RECORDID : 227806 DATE : 02-Jan-2025 16:51:06 o'clock EEST SEVERITY : Error SUBSYSTEM : WebLogicServer MACHINE : IFS8TEST SERVER : ManagedServer1 THREAD : [ACTIVE] ExecuteThread: '17' for queue: 'weblogic.kernel.Default (self-tuning)' USERID : WLS Kernel TXID : CONTEXTID : TIMESTAMP : 1476280266862 MSGID : BEA-000337 MESSAGE : [STUCK] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "651" seconds working on the request "Workmanager: default, Version: 0, Scheduled=true, Started=true, Started time: 651220 ms ", which is more than the configured time (StuckThreadMaxTime) of "600" seconds in "server-failure-trigger". Stack trace: sun.nio.cs.UTF_8.updatePositions(UTF_8.java:77) sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:564) sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:619) java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:561) sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:271) sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125) sun.nio.cs.StreamEncoder.write(StreamEncoder.java:113) java.io.OutputStreamWriter.write(OutputStreamWriter.java:194) ifs.fnd.record.serialization.FndTokenWriter.write(FndTokenWriter.java:168) ifs.fnd.record.FndAttribute.format(FndAttribute.java:1618) ifs.fnd.record.FndAbstractRecord.formatBuffer(FndAbstractRecord.java:1205) ifs.fnd.record.FndAbstractRecord.formatItem(FndAbstractRecord.java:1323) ifs.fnd.record.FndAbstractArray.formatValue(FndAbstractArray.java:448) ifs.fnd.record.FndCompoundAttribute.format(FndCompoundAttribute.java:297) ifs.fnd.record.FndAbstractRecord.formatBuffer(FndAbstractRecord.java:1205) ifs.fnd.record.FndAbstractRecord.formatItem(FndAbstractRecord.java:1323) ifs.fnd.record.FndAbstractRecord.format(FndAbstractRecord.java:1381) ifs.fnd.record.serialization.FndBufferUtil.formatRecord(FndBufferUtil.java:194) ifs.fnd.record.serialization.FndRecordFormat.formatRecord(FndRecordFormat.java:130) ifs.application.browsequickreports.ExecuteQuickReportBean.executeQR(ExecuteQuickReportBean.java:84) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:103) ifs.fnd.sf.j2ee.FndAbstractBean.aroundInvoke(FndAbstractBean.java:162) sun.reflect.GeneratedMethodAccessor194.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:109) com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(Unknown Source) com.sun.proxy.$Proxy132.executeQR(Unknown Source) ifs.application.browsequickreports.ExecuteQuickReport_zh5460_ExecuteQuickReportLocalImpl.__WL_invoke(Unknown Source) weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:33) ifs.application.browsequickreports.ExecuteQuickReport_zh5460_ExecuteQuickReportLocalImpl.executeQR(Unknown Source) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) ifs.fnd.gateway.client.EJBServerConnection.invoke(EJBServerConnection.java:129) ifs.fnd.gateway.client.ServerCommunicator.invoke(ServerCommunicator.java:162) ifs.fnd.gateway.client.IfsClientGateway.doPostImpl(IfsClientGateway.java:830) ifs.fnd.gateway.IfsAbstractGateway.doPost(IfsAbstractGateway.java:253) javax.servlet.http.HttpServlet.service(HttpServlet.java:751) ifs.fnd.gateway.IfsAbstractGateway.service(IfsAbstractGateway.java:186) javax.servlet.http.HttpServlet.service(HttpServlet.java:844) weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280) weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254) weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136) weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:341) weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:238) weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3363) weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3333) weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2220) weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2146) weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2124) weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564) weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254) weblogic.work.ExecuteThread.execute(ExecuteThread.java:295) weblogic.work.ExecuteThread.run(ExecuteThread.java:254)
Our customer decreased their downtime about 90% and improved their IFS WebLogic domain performance.
Anymore they like their ERP system IFS much more than before