Firefox 和 Chrome 向我的 REST API 报告大约 2000 毫秒的响应时间(本地主机)。数据库在 1 毫秒内执行查询。具有相同内容的静态 JSON 文件在 4 毫秒内提供。
时间都去哪儿了?ORDS.war 是否正在消耗它,它是数据库连接时间,是 Tomcat 使用它还是其他什么?如何找到根本原因?
更新:Win10。停止 Apache 服务并尝试从命令行运行 catalina.bat,响应时间下降到 ~30 毫秒。杀死它并再次尝试作为服务运行 - 响应时间始终约为 170 毫秒。
我在运行此查询的 Tomcat 8.5.16 (jre1.8.0_144 x64) 上运行了 ORDS 3.0.11.180.12.34 服务:
SELECT 1 FROM dual
如下
DECLARE
l_handler_id ords_metadata.ords_handlers.id%TYPE := NULL;
l_param_id ords_metadata.ords_parameters.id%TYPE := NULL;
l_module_name ords_metadata.ords_modules.name%type := 'rest';
l_pattern ords_metadata.ords_templates.uri_template%type := 'select_1_from_dual';
l_method ords_metadata.ords_handlers.method%type := 'GET';
BEGIN
ords.define_template (
p_module_name => l_module_name,
p_etag_type => 'QUERY',
p_etag_query => q'~SELECT dbms_random.value(0,1) FROM dual~',
p_pattern => l_pattern
);
ords.define_handler (
p_module_name => l_module_name,
p_pattern => l_pattern,
p_method => l_method,
p_source_type => ords.source_type_collection_item,
p_source => 'SELECT 1 FROM dual'
);
COMMIT;
END;
/