簡體   English   中英

如何防止每次http請求加載和卸載OnDemandConnRouteHelper.dll?

[英]How to prevent OnDemandConnRouteHelper.dll from being loaded and unloaded every http request?

調用IServerXmlHttpRequest.Open

var http = (IServerXMLHTTPRequest2) new CreateComObject(CLASS_ServerXMLHTTP60);
http.Open("GET", "https://thepiratebay.org/description.php?id=54783221", false, "mhalifa", "hunter2");

導致每次加載和卸載庫OnDemandConnRouteHelper.dll

| Time               | Operation                 | Path                                            | Result                        |
|--------------------|---------------------------|-------------------------------------------------|-------------------------------|
| 3:08:29.0705523 PM | CreateFile                | C:\WINDOWS\SysWOW64\OnDemandConnRouteHelper.dll | SUCCESS                       |
| 3:08:29.0705941 PM | QueryBasicInformationFile | C:\WINDOWS\SysWOW64\OnDemandConnRouteHelper.dll | SUCCESS                       |
| 3:08:29.0706149 PM | CloseFile                 | C:\WINDOWS\SysWOW64\OnDemandConnRouteHelper.dll | SUCCESS                       |
| 3:08:29.0708557 PM | CreateFile                | C:\WINDOWS\SysWOW64\OnDemandConnRouteHelper.dll | SUCCESS                       |
| 3:08:29.0709287 PM | CreateFileMapping         | C:\WINDOWS\SysWOW64\OnDemandConnRouteHelper.dll | FILE LOCKED WITH ONLY READERS |
| 3:08:29.0712518 PM | CreateFileMapping         | C:\WINDOWS\SysWOW64\OnDemandConnRouteHelper.dll | SUCCESS                       |
| 3:08:29.0714096 PM | Load Image                | C:\WINDOWS\SysWOW64\OnDemandConnRouteHelper.dll | SUCCESS                       |
| 3:08:29.0714328 PM | QueryNameInformationFile  | C:\WINDOWS\SysWOW64\OnDemandConnRouteHelper.dll | SUCCESS                       |
| 3:08:29.0717643 PM | CreateFile                | C:\WINDOWS\SysWOW64\OnDemandConnRouteHelper.dll | SUCCESS                       |
| 3:08:29.0807774 PM | CloseFile                 | C:\WINDOWS\SysWOW64\OnDemandConnRouteHelper.dll | SUCCESS                       |
| 3:08:29.0810143 PM | QueryNameInformationFile  | C:\WINDOWS\SysWOW64\OnDemandConnRouteHelper.dll | SUCCESS                       |

如您所見,此偏移使我的 http 請求增加了10.462 ms

當整個請求為~30 ms時,每次額外加載和卸載一個dll會增加50%的操作次數。

並將我的吞吐量從 50 個請求/秒減少到 33 個請求/秒。

足夠的問題動機,然后繼續提問

  • 什么是OnDemandConnRouteHelper.dll
  • 我可以做些什么來滿足我的要求而不需要幫助嗎?
  • 我可以要求 ServerXMLHTTPRequest object 不使用助手嗎?
  • 我可以說服 ServerXMLHTTPRequest 將 dll 永遠加載到我的進程中嗎?

換句話說:我想要我的 50% 返還——我如何獲得它?

連接路由助手

我不知道這個 dll 是做什么的,但唯一有用的 function 被記錄為:

OnDemandGetRoutingHint function 在路由請求緩存中查找目標,如果找到匹配項,則返回相應的接口 ID。

這聽起來很有趣。 但是,如果您立即卸載 dll,您將丟棄緩存 - 從而破壞緩存的任何用處。

這不是答案,但解決方法是手動加載一次庫。

在 Windows 中不需要在程序退出前卸載 DLL - 當進程被 Windows 拆除時,DLL 將被卸載。

所以調用沒有壞處:

  • LoadLibrary('OnDemandConnRouteHelper');

事實上,多次調用它並沒有什么壞處。

只是不要調用UnloadLibrary 因為那時它必須再次加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM