【发布时间】:2013-11-12 15:54:20
【问题描述】:
我们有一个需要启用 SSL 的 Delphi SOAP 服务。我选择使用 IIS ARR 反向代理来进行 SSL 卸载,以便于配置(与 OpenSSL 和手动证书 + 密码管理相比)。 ARR 有效,但它增加了大量的开销...... 18 个服务请求的响应时间从 不到 2 秒到 19 秒(压缩后总计约 60Kb)。
我为客户端和服务器添加了时间戳日志记录,用于发送和接收消息。它显示从客户端发送到服务接收之间通过 ARR 的每个请求路由增加了大约 1 秒。响应很快被路由回来,只有通过 ARR 的请求路由很慢(见下图)。
如何追踪开销的来源? ARR 不适合这个用例吗?我尝试调整和禁用大多数设置,包括缓存。我尝试了具有干净 IIS 设置的不同主机,包括生产 Windows Server 2012。SSL 本身不是开销,只是使用 ARR HTTP 反向代理会导致延迟。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://localhost:8987/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
来自 Fiddler 的请求和响应示例:
【问题讨论】:
-
不应该看到这种类型的延迟。首先想到的是您的应用程序池超时设置,它们是否正在关闭并且延迟是池在每个请求时启动?确保它们永远不会因为空闲而关闭。
-
@dirt 感谢您的回复。我的应用程序池空闲关闭设置为两天,并且仅在内存使用限制违规时回收。我目前在“无托管代码”和集成管道上。 IIS 跟踪显示延迟在 ARR 的 EXECUTE_REQUEST_HANDLER 上(我在您的评论之后添加了图像)。
-
@carlmon 只是想知道你是否解决了这个问题?我怀疑我的环境中的 ARR 性能(虽然没有这么糟糕),ps:我看到 ARR 3.0 刚刚发布了 beta 版。
-
没有解决办法。这都是 ARR 3.0。我们发布时没有使用 SSL,并且可能会在下一次更新中使用 Delphi 中的 OpenSSL 来支持 SSL。
-
在重写操作 URL 中将 localhost 更改为 127.0.0.1 将加载时间显着减少。
标签: iis soap iis-7 arr iis-arr