05 2014 档案
摘要:当处于内核模式的http.sys接收到来自用户的请求之后,会将请求放入队列中。那处于用户模式的w3wp进程如何从内核模式的队列中取出请求呢?I/O完成端口(IOCP,I/O Completion Port)闪亮登场。w3wp专门用了一个线程池干这个——W3TP,可以通过process explorer捕捉到它的身影。
阅读全文
摘要:一、IIS:应用程序池队列(Application pool queue,位于HTTP.SYS)。这是请求到达IIS后遇到的第一个队列,http.sys收到请求后会将请求放入对应的应用程序池队列,这样可以减少上下文的切换。需要注意的是应用程序池队列虽然是给w3wp进程用的,但它存在于http.sys的内存区。
阅读全文
摘要:在默认情况下,http.sys kerne mode cache只缓存静态文件。那我们如何让ASP.NET OutputCache直接使用http.sys kerne mode cache?这样缓存的处理性能会更好。解决方法是在IIS的Output Caching设置中,添加一条针对.aspx扩展名的使用kernel-mode caching的缓存规则。
阅读全文
摘要:万万没有想到!当初为了解决使用负载均衡时记录客户端IP地址的问题,在IIS URL Rewrite Module中增加一条URL重写规则。竟然造成http.sys的内核模式缓存(kernel mode caching)被IIS URL Rewrite Module禁用,禁用理由是重写规则中用到了影响缓存安全的服务器变量。
阅读全文
摘要:一项新技术或者一个新特性,只有你用它解决实际问题后,才能真正体会到它的魅力,真正理解它。也期待大家能够多分享解一些解决实际问题的内容。在我们遭遇“黑色30秒”问题的过程中,切身体会到了异步的巨大作用,于是开始逐步地用async/await改造现有代码。
阅读全文
摘要:最近一直被C#调用Haskell时的“尝试读取或写入受保护的内存”问题所困扰,而且困在其中,越陷超深,无法自拔,差点弃用C#解决我们面临的问题。问题是这样的,只要在Haskell代码中对字符串进行操作,在C#调用时就会引发异常。
阅读全文
摘要:Haskell的代码:readMarkdown与writeHtmlString是pandoc中的函数,newString的作用是将String转换为IO CString。运行C#代码之后,出现错误:Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
阅读全文
摘要:系统环境:Windows Server 2008 R2,Haskell Platform 2013.2.0.0,ghc 7.6.3,cabal 1.16.0。操作步骤:1. 安装Windows版Haskell Platform;2. 编写Haskell代码保存于.hs文件中;3. 编写C代码保存于.c文件中;编写cabal配置文件保存于.cabal文件中。
阅读全文
摘要:1. 运行命令cabal install glib时出现错误;2. 运行命令cabal install gtk2hs-buildtools;3. 重新运行命令cabal install glib,出现新的错误;4. 下载/安装GTK+ all-in-one bundle;5. 重新运行命令cabal install glib,出现新的错误。
阅读全文
摘要:所用环境:Windows Server 2008 + ghc 7.6.3(Haskell Platform 2013.2.0.0自带的) + pandoc 1.12.4。操作步骤:1. 安装Haskell Platform。2. 安装pandoc,安装命令:cabal install pandoc。3. 在命令行中运行ghci。4. 引用pandoc的相应模块。5. 调用pandoc的readMarkdown与writeHtmlString函数。
阅读全文