I've been trying out the latest ORDS 3.0.5 (deployed on WLS 10.3.6, database is 18.104.22.168), and have noticed that all RESTful requests take significantly longer than in previous versions. Even the simplest RESTful handler, defined as "select 1 from dual" takes over 300ms to execute, whereas the same exact handler on earlier versions (have tried various earlier 3.0.x and 2.0.x versions, and it doesn't seem to vary much) takes around 100ms. Seems a bit ironic, considering that one of the bugs fixed in 3.0.5, according to the release notes, is this one:
- BUG:23146410 - Decrease per request overhead and improve database resource management
Does anyone have similar experiences?
Please provide the following info which will help pointing out the issue:
- Detail Oracle APEX Version (if using ORDS + APEX)
- Detail Oracle Database Version
- Detail ORDS Version
- Detail Supported Java EE Application Server Version (if using one)
- Detail JDK Version
NOTE : Here "Detail" means the major+minor version. For e.g. Application Express 4.2.4.00.08
Locate the ORDS configuration folder, edit the config.xml file and paste out the JDBC configuration parameters (jdbc.*) for ORDS 3.0.5, earlier 3.0.x and 2.0.x versions in the forum reply.
Refer the following thread on ORDS Performance:
- APEX version is 5.0.3 (I've tried using both APEX workspace RESTful services and the schema-based ones in ORDS 3, and the performance seems to be the same)
- Database version is 22.214.171.124
- ORDS versions are 3.0.5 (slow) and 2.0.3 (fast). Before 3.0.5 was released, I ran 3.0.4 instead, and couldn't see any performance difference compared to 2.0.3.
- ORDS (both versions) are deployed on WLS 10.3.6 running on Windows 2008 R2.
- JDK version is 1.7.0_79.
The JDBC parameters are the same on both versions:
<entry key="jdbc.DriverType">thin</entry> <entry key="jdbc.InactivityTimeout">1800</entry> <entry key="jdbc.InitialLimit">3</entry> <entry key="jdbc.MaxConnectionReuseCount">1000</entry> <entry key="jdbc.MaxLimit">50</entry> <entry key="jdbc.MaxStatementsLimit">10</entry> <entry key="jdbc.MinLimit">3</entry> <entry key="jdbc.statementTimeout">9000</entry>
I am seeing that APEX web page accesses using ORDS 3.0.5 vs mod_plsql 126.96.36.199 are doing extra logons/logoffs to APEX_REST_PUBLIC_USER which correspond with the number of get_file (#WORKSPACE_IMAGES#) and ajax (dynamic action) calls on the web page. Mod_plsql only uses the APEX_PUBLIC_USER connection pool whereas APEX uses the connection pool and individual logons/logoffs. This is despite having APEX rest services turned off. Seems like the configuration needs to mature some. The extra connects/disconnects are a performance killer. I would also like the "defaults" validation function to work on the url mapping ("DADS") level rather than for all databases (for PL/SQL Web Toolkit Applications).