相关疑难解决方法(0)

什么是HttpRuntime.Cache和Session之间的区别?

可能重复:
缓存与会话

我正在使用一些使用HttpRuntime.Cache存储值的代码.然而,当我关闭窗口时,缓存会消失.在Session上使用它有什么好处吗?

这是我的代码:

protected dynamic Code()
{
    dynamic code;

    if (String.IsNullOrEmpty(myHttpContext.Request.QueryString["code"]))
    {
        code = HttpRuntime.Cache["code"];
    }
    else
    {
        code = myHttpContext.Request.QueryString["code"];
        HttpRuntime.Cache.Insert("code", myHttpContext.Request.QueryString["code"]);
    }

    return code;
}

protected string GetAccessToken(bool regenerate = false)
{
    if (HttpRuntime.Cache["access_token"] == null || regenerate == true)
    {
        try
        {
            Dictionary<string, string> args = GetOauthTokens(myHttpContext.Request.QueryString["code"]);
            HttpRuntime.Cache.Insert("access_token", args["access_token"], null, DateTime.Now.AddMinutes(Convert.ToDouble(args["expires"])), TimeSpan.Zero);
        }
        catch
        {
            OutputError("Code", "Bad Verification Code");
        }
    }

    return HttpRuntime.Cache["access_token"].ToString();
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net session

16
推荐指数
1
解决办法
1万
查看次数

IIS 8.5单工作进程与Web Garden性能

我有简单的ASP.NET应用程序,它只使用ImageResizer调整图像大小,并且不执行任何其他操作.出于测试目的,我禁用了磁盘缓存,因此每次请求都会调整图像大小.

当我使用JMeter测试应用程序的性能时,我得到以下平均响应时间:

  • 单个工作进程,1个并发客户端:~200ms
  • 单个工作进程,10个并发客户端:~1200ms
  • 4个工作进程,10个并发客户端:~300ms

如您所见,当我运行单个工作进程和10个并发客户端时,尽管有可用的硬件资源,响应时间也会急剧增加:性能测试期间的CPU使用率约为30%,内存使用量约为150MB.

这里所讨论的,

Web园的设计只有一个原因 - 提供不受CPU约束但执行长时间运行请求的应用程序能够扩展并且不会耗尽工作进程中可用的所有线程.

这似乎不是我的情况.

我不明白为什么会得到这样的结果.我所期望的是,即使是单个工作进程也会提供可接受的响应时间,直到达到资源限制.10个并发客户端绝对不是一个重负载.有人可以向我解释,我错在哪里?

我的配置:

  • Windows Server 2012 R2
  • IIS 8.5具有所有默认设置(MaxWorkerThreads除外)
  • 四核i3 3.4GHz CPU
  • 16 GB RAM

我的应用程序只是带有ImageResizer的空ASP.NET MVC应用程序,在此指令中添加(选项3 - 手动安装)并在Web.config中禁用DiskCache插件

asp.net iis performance multithreading

6
推荐指数
1
解决办法
3745
查看次数

标签 统计

asp.net ×2

c# ×1

iis ×1

multithreading ×1

performance ×1

session ×1