3 Replies Latest reply on Jul 10, 2020 11:52 AM by Walid KHARRAT

    how to debug

    Walid KHARRAT

      Hi,

       

      i have a peak in certain rest service (ords) deployed on weblogic : this is a description of the behavior.

      https://docs.google.com/document/d/1gwsgD_gjWTTgOOZ7ELlSsQ4EBVPWoHox1WpGZact8S0/edit?usp=sharing

      have an idea how to eliminates this peaks?

       

      Regards

      Walid

        • 1. Re: how to debug
          thatJeffSmith-Oracle

          you can embed content here, i'm not likely to go click on a random  web link ...

          • 2. Re: how to debug
            Walid KHARRAT

            i have 4 weblogic backend where ords 19.4.6 is deployed.

            apex_pu.xml :

             

            <entry key="db.username">ORDS_PUBLIC_USER</entry>

            <entry key="jdbc.InitialLimit">30</entry>

            <entry key="jdbc.MinLimit">30</entry>

            <entry key="jdbc.MaxLimit">150</entry>

            <!--entry key="jdbc.statementTimeout">4</entry-->

            </properties>

             

             

             

            i have a cron with test api (one call per minute L.B. = one call per 4 minute for each server)

             

             

            api test is very basic : post service with select sysdate from dual.

             

            i have this ugly peaks : one second to do the test query

             

             

             

             

             

             

             

             

             

             

            the peaks happen in all backends :

             

             

            there’s no relation with backend

             

            i record with jmc and this is the trace of java method when the peak happen:

             

             

            the whole trace

             

             

            "Stack Trace";"Count"

            "sun.nio.ch.SocketChannelImpl.read(ByteBuffer)";"1"

            "oracle.net.nt.TimeoutSocketChannel.read(ByteBuffer)";"1"

            "oracle.net.ns.NSProtocolNIO.doSocketRead(int)";"1"

            "oracle.net.ns.NIOPacket.readNIOPacket(SessionAtts)";"1"

            "oracle.net.ns.NSProtocolNIO.negotiateConnection(NVFactory, NVNavigator, boolean, boolean)";"1"

            "oracle.net.ns.NSProtocol.connect(String, Properties, GSSCredential)";"1"

            "oracle.jdbc.driver.T4CConnection.connect(String, GSSCredential)";"1"

            "oracle.jdbc.driver.T4CConnection.logon(GSSCredential)";"1"

            "oracle.jdbc.driver.PhysicalConnection.connect(GSSCredential)";"1"

            "oracle.jdbc.driver.T4CDriverExtension.getConnection(String, Properties, GSSCredential)";"1"

            "oracle.jdbc.driver.OracleDriver.connect(String, Properties, GSSCredential)";"1"

            "oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(Properties, GSSCredential)";"1"

            "oracle.jdbc.pool.OracleDataSource.getConnection(OracleConnectionBuilderImpl)";"1"

            "oracle.jdbc.pool.OracleDataSource.getConnection(String, String)";"1"

            "oracle.jdbc.pool.OracleDataSource.getConnection()";"1"

            "oracle.dbtools.common.config.db.OracleConnectionFactory._connection()";"1"

            "oracle.dbtools.common.config.db.ConnectionFactory.getConnection(ConnectionSchemaType)";"1"

            "oracle.dbtools.common.jdbc.provider.HasConnection.getConnection()";"1"

            "oracle.dbtools.common.config.db.ValidatedConnectionFactory.from(Configuration, Path)";"1"

            "oracle.dbtools.common.config.db.ConfiguredPoolDataSourceImplLoader.validatePool(DatabasePoolConfiguration)";"1"

            "oracle.dbtools.common.config.db.ConfiguredPoolDataSourceImplLoader.load(DatabasePoolConfiguration)";"1"

            "oracle.dbtools.common.config.db.ConfiguredPoolDataSourceLoaderImpl.load(DatabasePoolConfiguration)";"1"

            "oracle.dbtools.common.config.db.RefreshablePoolDataSourceFactory.load(DatabasePoolConfiguration)";"1"

            "oracle.dbtools.common.config.db.DatabasePoolLoader.load(DatabasePoolConfiguration)";"1"

            "oracle.dbtools.common.config.db.DatabasePoolLoader.load(DatabasePoolConfiguration)";"1"

            "oracle.dbtools.common.config.db.ConfiguredPoolDataSourceLoader.load(DataSourceIdentifier)";"1"

            "oracle.dbtools.common.config.db.DatabasePoolLoader.load(DataSourceIdentifier)";"1"

            "oracle.dbtools.common.config.db.DatabasePoolLoader.load(DataSourceIdentifier)";"1"

            "oracle.dbtools.common.config.db.RefreshablePoolDataSources$PoolFromDataSourceIdentifierLoader.call()";"1"

            "oracle.dbtools.common.config.db.RefreshablePoolDataSources$PoolFromDataSourceIdentifierLoader.call()";"1"

            "oracle.dbtools.common.functions.Functions$3.get()";"1"

            "oracle.dbtools.common.functions.MaybeValidImpl.load(Clock, CheckedSupplier, Collection)";"1"

            "oracle.dbtools.common.functions.MaybeValidImpl.<init>(Clock, CheckedSupplier, TimeDuration, Collection)";"1"

            "oracle.dbtools.common.functions.MaybeValidImpl.<init>(Clock, CheckedSupplier, TimeDuration, Collection, MaybeValidImpl$1)";"1"

            "oracle.dbtools.common.functions.MaybeValidImpl$LoaderImpl.load()";"1"

            "oracle.dbtools.common.functions.MaybeValidCache$MaybeValidCacheLoader.call()";"1"

            "oracle.dbtools.common.functions.MaybeValidCache$MaybeValidCacheLoader.call()";"1"

            "com.google.common.cache.LocalCache$LocalManualCache$1.load(Object)";"1"

            "com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(Object, CacheLoader)";"1"

            "com.google.common.cache.LocalCache$Segment.loadSync(Object, int, LocalCache$LoadingValueReference, CacheLoader)";"1"

            "com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(Object, int, CacheLoader)";"1"

            "com.google.common.cache.LocalCache$Segment.get(Object, int, CacheLoader)";"1"

            "com.google.common.cache.LocalCache.get(Object, CacheLoader)";"1"

            "com.google.common.cache.LocalCache$LocalManualCache.get(Object, Callable)";"1"

            "oracle.dbtools.common.functions.MaybeValidCache.get(Object, Callable, int)";"1"

            "oracle.dbtools.common.functions.MaybeValidCache.get(Object, Callable, int)";"1"

            "oracle.dbtools.common.functions.MaybeValidCache.get(Object, Callable)";"1"

            "oracle.dbtools.common.config.db.RefreshablePoolDataSources.pool(DataSourceIdentifier)";"1"

            "oracle.dbtools.common.config.db.DatabasePools.pool(DataSourceIdentifier)";"1"

            "oracle.dbtools.common.config.db.DatabasePools.dataSource(DataSourceIdentifier)";"1"

            "oracle.dbtools.common.pools.DataSourceTargetImpl.pool()";"1"

            "oracle.dbtools.common.pools.DataSourceTargetImpl.dataSourceConnection()";"1"

            "oracle.dbtools.common.pools.DataSourceTargetImpl.supportsContainerSwitch()";"1"

            "oracle.dbtools.common.pools.DataSourceTargetImpl.resolve(ServletRequest)";"1"

            "oracle.dbtools.url.mapping.db.DatabaseURLMappingBase.checkPDBMapping(RequestMapper, DataSourceTarget, ServletRequest)";"1"

            "oracle.dbtools.url.mapping.db.DatabaseURLMappingBase.resolve(ServletRequest)";"1"

            "oracle.dbtools.url.mapping.URLMappingCache.load(ServletRequest)";"1"

            "oracle.dbtools.url.mapping.URLMappingCache.map(ServletRequest, boolean)";"1"

            "oracle.dbtools.url.mapping.filter.URLMappingFilter.doFilter(HttpServletRequest, HttpServletResponse, FilterChain)";"1"

            "oracle.dbtools.http.filters.HttpFilter.doFilter(ServletRequest, ServletResponse, FilterChain)";"1"

            "oracle.dbtools.http.filters.FilterChainImpl.doFilter(ServletRequest, ServletResponse)";"1"

            "oracle.dbtools.http.auth.external.ExternalSessionFilter.doFilter(HttpServletRequest, HttpServletResponse, FilterChain)";"1"

            "oracle.dbtools.http.filters.HttpFilter.doFilter(ServletRequest, ServletResponse, FilterChain)";"1"

            "oracle.dbtools.http.filters.FilterChainImpl.doFilter(ServletRequest, ServletResponse)";"1"

             

            this is not an error trace

            • 3. Re: how to debug
              Walid KHARRAT

              is there a way to force the pool of ords to test the inactive connections after timeout, like with these parameters:

              <entry key="jdbc.preferredTestQuery">select 1 from dual</entry>

              <entry key="jdbc.idleConnectionTestPeriod">120</entry>

               

              i add them to defaults.xml but nothing happen. the purpose being the information last_call_et is reseted in v$session(for the ords inactive sessions maybe for the ords_public_user and the proxy user because all of them are opened).

              if i got this behaviour i Think my problems with these pool will desappear.

               

              Regards

              Walid