IFS / IFSWORLD Usecase: Monitoring IFS ERP Applications

2016/11/24

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:

  1. Firstly we have installed WLSDM in minutes to their IFS WebLogic test and production domains.
  2. Then WLSDM started to monitor IFS domain and gather information about domain. Started to generate ALERTS and notifications immediate
  3. After WLSDM installation, our customer gained power to monitor and diagnose their IFS as below:
  4. Environment: IFS8, Oracle WebLogic Server 12c (12.1.2), WLSDM (Upgraded to v.2.5.2), Java-JDK (We have upgraded JAVA to jdk1.7.0_79)

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.

WLSDM: Monitoring IFS Back-end SQL/JDBC Statements



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.

WLSDM: Monitoring IFS Back-end EJB Methods


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.

WLSDM: Monitoring IFS WebLogic Domain Health and States


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.

WLSDM: SQL Notification/ALARM for IFS Domains


By getting below SMTP(email) notifications/alarms we understand what is going on the IFS WebLogic domain.


WLSDM: SQL Notification/ALARM for IFS Domains



WLSDM: SQL Notification/ALARM for IFS Domains



WLSDM: LOG Notification/ALARM for IFS Domains



For the below STUCK thread error, we gave tiemout for the relevant transactions and transformed IFS WebLogic domain more strong, healthy and responsive.

												RECORDID  : 227806
												DATE      : 12-Oct-2016 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

Download Latest WLSDM for WebLogic 11g and 12c


WLSDM does not require a license key for the first 30 days of a trial period. However, if you have already evaluated the product and now need to prolong the trial period, please complete this form in order to obtain a new 30 days trial license key.

  • Latest Version: v3.1.1
  • Quick Installation Guide: Available in ZIP package as README.html
  • Online Documentation: Available in ZIP package as WLSDM-HELP.html

Follow Us and Get Updates!