【问题标题】:Determine memory used by asp.net cache in shared hosting确定共享主机中asp.net缓存使用的内存
【发布时间】:2012-06-05 12:50:36
【问题描述】:

根据这个question,我想知道asp.net的system.web.caching.cache是​​否适合我,还是我应该使用数据库缓存?

所以,我需要知道 system.Web.caching.cache 使用了多少内存? 但是由于我使用的是共享托管服务器,所以我不能使用任务管理器。 有什么方法可以使用一些代码来确定 system.web.caching.cache 使用了多少内存?

【问题讨论】:

    标签: c# asp.net caching shared-hosting


    【解决方案1】:

    查看应用程序使用多少工作内存的一种快速方法是直接询问垃圾回收。

    long bytes = GC.GetTotalMemory(false);
    txtMemoryUsed.Text = bytes.ToString();
    

    并使用这个文字<asp:Literal runat="server" ID="txtMemorysUsed" EnableViewState="false" />

    但是您可以使用PerformanceCounter 获取更多详细信息,例如您可以获得此代码使用的池的虚拟内存数量:

     var oPerfCounter = new PerformanceCounter();
    oPerfCounter.CategoryName = "Process";
    oPerfCounter.CounterName = "Virtual Bytes";
    oPerfCounter.InstanceName = "aspnet_wp";
    txtMemorysUsed.Text = "Virtual Bytes: " + oPerfCounter.RawValue + " bytes";
    

    您可以使用所有这些参数来获取池的信息。

    Processor(_Total)\% Processor Time
    Process(aspnet_wp)\% Processor Time
    Process(aspnet_wp)\Private Bytes
    Process(aspnet_wp)\Virtual Bytes
    Process(aspnet_wp)\Handle Count
    Microsoft® .NET CLR Exceptions\# Exceps thrown / sec
    ASP.NET\Application Restarts
    ASP.NET\Requests Rejected
    ASP.NET\Worker Process Restarts (not applicable to IIS 6.0)
    Memory\Available Mbytes
    Web Service\Current Connections
    Web Service\ISAPI Extension Requests/sec
    

    例如,此参数获取 cpu 负载。

    oPerfCounter.CategoryName = "Processor";
    oPerfCounter.CounterName = "% Processor Time";
    oPerfCounter.InstanceName = "_Total";
    txtOutPut.Text = "Current CPU Usage: " + oPerfCounter.NextValue() + "%";
    

    参考:http://msdn.microsoft.com/en-us/library/ms972959.aspx

    亲戚:Monitoring ASP.NET application memory from within the application

    我已经在本地 iis 上进行了测试。

    【讨论】:

    • GC 是否给了我当前 Web 应用程序使用的内存?
    • @Mahdi 在共享环境中,该池运行许多站点,您的站点与其他站点一起存在,除非您要求“私人”池。 (所以它不仅仅是当前的 Web 应用程序,而是池)。因此,您可以获得池的内存(包括一起运行的其他站点)
    • 我的控制面板是plesk,好像每个用户都有一个应用程序池。 (我可以停止/启动它,甚至限制我的站点的 CPU 使用率)。那么,我的应用程序池是私有的吗?
    • @Mahdi 只告诉你你的申请。
    • @Mahdi 如果你有这个选项,可能你有不同的池不影响其他人。
    猜你喜欢
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 2017-05-22
    • 2015-06-22
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多