繁体   English   中英

当ISAPI筛选器实现SF_NOTIFY_SEND_RAW_DATA时,什么会导致吞吐量真正变慢?

[英]What can cause throughput to become really slow when an ISAPI filter implements SF_NOTIFY_SEND_RAW_DATA?

我已经开发了一段时间的IIS6 ISAPI筛选器,但是我发现有一些令人不安的地方。 每当我安装过滤器并下载文件时,文件下载就会变得非常缓慢。 从远程计算机上,未安装过滤器的速度为每秒120kb,而安装过滤器的速度为每秒45kb。

这似乎与SF_NOTIFY_SEND_RAW_DATA回调有关。 每当我注册该回调函数时,下载速度就会很慢;如果不注册,一切都会很好。

即使我使HttpFilterProc函数也可以立即返回,如下所示:

DWORD WINAPI HttpFilterProc( PHTTP_FILTER_CONTEXT pfc, 
   DWORD notificationType,
   LPVOID pvNotification )
{   
    return SF_STATUS_REQ_NEXT_NOTIFICATION;
}

我也尝试过返回具有相同结果的SF_STATUS_REQ_HANDLED_NOTIFICATION

我的DLL上是否有一些构建设置可能导致回调函数的执行缓慢,或者这仅仅是ISAPI所采用的方式?

它与IIS的内部以及它如何实现数据发送有关。 此Microsoft博客文章位于: http : //blogs.msdn.com/david.wang/archive/2005/12/14/How-IIS6-Compression-Schemes-interact-with-ISAPI-Filters.aspx从内核到用户空间的数据,并且无法使用VectorSend。 我不完全理解这个人在说什么,但要点是“如果可以帮助的话,请避免使用SF_NOTIFY_SEND_RAW_DATA”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM