We are migrating from mod_plsql to ORDS 19.4 for a PL/SQL application (not APEX) that uses HTTP Basic dynamic authentication by connecting to the database as the username specified in the Basic challenge box. At the browser we are seeing that the application displays pages much faster when using mod_plsql vs ORDS. For example we created a JMeter test with 50 users, the test using mod_plsql ran in 2 min 54 sec in comparison ORDS 19.4 it took 48 minutes 44 sec.
Another observation when logging in with 1 user. When using mod_plsql I could see the user session in V$SESSION. With ORDS 19.4 it the user is logged immediately.
Comparison of User logins in dba_audit_trail:
Basic Auth Pop-up Login
Selected a Menu Option
/* List Logins */
select * from dba_audit_trail
where username = 'JAK'
and action_name = 'LOGON'
order by timestamp desc
-- From ORDS 19.4 readme.
Performance of ORDS based REST APIs was significantly improved in ORDS 19.4.0 by changing how ORDS handles proxied database connections. In ORDS 19.2.0 and earlier, for each HTTP request ORDS proxies from ORDS_PUBLIC_USER to the relevant ORDS enabled schema, performs the relevant database calls and then closes the proxy session. We term this behavior 'disposing' a connection.
In ORDS 19.4.0 and later ORDS changes its default behavior to keep proxied connections in the pool, ameliorating away the cost of opening and closing the proxy sessions. This gives a very substantial performance improvement. We term this behavior 'recycling' a connection.
Reverting to Previous behavior
ORDS Administrators may revert to the old behavior of 'disposing' connections by performing the following command:
java -jar ords.war set-property jdbc.cleanup.mode dispose
To switch to recycling connections use:
java -jar ords.war set-property jdbc.cleanup.mode recycle
Managing Connection Re-use
I don't see any difference in performance between ORDS 19.2 and 19.4
I have these set in defaults.xml
Is there anything else that needs to be set to improve performance with ORDS?