使用Sql Server 2005 Profiler,您可以跟踪哪些事件,列和过滤器以查找最慢的查询和存储过程?
慢=大于N秒,为了争论10.
在IIS6上运行的ASP.NET Web应用程序会定期向CPU发送高达100%的CPU.在这些剧集中,W3WP几乎负责所有CPU的使用.CPU在几分钟到一个多小时的任何地方都保持100%固定.
这是在登台服务器上,此时该站点只能从测试人员获得非常轻的流量.
我们在服务器上运行ANTS分析器,但它一直没有启发.
我们在哪里可以开始找出造成这些剧集的原因以及在这段时间内CPU保持繁忙的代码?
我经常使用VisualVM运行Java应用程序,但需要X才能在计算机上运行
我知道我可以通过管理端口连接,但这将是一个离线采样分析,这对我来说是不够的.
所以我正在寻找一种解决方案,我可以从命令行分析正在运行的Java应用程序的方法的CPU使用情况.这对我来说足以在服务器上收集数据,然后可以在不同的机器上分析收集的数据.
更新:
看来我需要更加具体.我想从命令行分析正在运行的Java应用程序,我不想阻止它并重新运行它.
我试图找出我的对象需要多少内存才能看到它们中有多少内存在大对象堆上(超过85,000字节).
对于每个对象的任何引用类型等,添加4为int,8为长,4(或8如果你在64位)是简单的,或者是方法,属性等的开销.
我目前正在做一些最后的测量优化,主要是为了娱乐和学习,并发现了一些让我有几个问题的东西.
一,问题:
Expression<...>我的简单加法方法(Int32 + Int32 => Int32)的版本比最小的DynamicMethod版本运行得更快?这是一个简短而完整的程序.在我的系统上,输出是:
DynamicMethod: 887 ms
Lambda: 1878 ms
Method: 1969 ms
Expression: 681 ms
Run Code Online (Sandbox Code Playgroud)
我期望lambda和方法调用具有更高的值,但DynamicMethod版本一直慢约30-50%(变化可能是由于Windows和其他程序).谁知道原因?
这是程序:
using System;
using System.Linq.Expressions;
using System.Reflection.Emit;
using System.Diagnostics;
namespace Sandbox
{
public class Program
{
public static void Main(String[] args)
{
DynamicMethod method = new DynamicMethod("TestMethod",
typeof(Int32), new Type[] { typeof(Int32), typeof(Int32) });
var il = method.GetILGenerator();
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Ldarg_1);
il.Emit(OpCodes.Add);
il.Emit(OpCodes.Ret);
Func<Int32, Int32, Int32> f1 =
(Func<Int32, Int32, Int32>)method.CreateDelegate(
typeof(Func<Int32, …Run Code Online (Sandbox Code Playgroud) 我正在使用cProfile来配置我的Python程序.根据这个说法,我的印象是KCacheGrind可以解析并显示cProfile的输出.
但是,当我去导入文件时,KCacheGrind只会在状态栏中显示"未知文件格式"错误,并且不显示任何内容.
在我的性能分析统计数据与KCacheGrind兼容之前,我需要做些什么特别的事情吗?
...
if profile:
import cProfile
profileFileName = 'Profiles/pythonray_' + time.strftime('%Y%m%d_%H%M%S') + '.profile'
profile = cProfile.Profile()
profile.run('pilImage = camera.render(scene, samplePattern)')
profile.dump_stats(profileFileName)
profile.print_stats()
else:
pilImage = camera.render(scene, samplePattern)
...
Run Code Online (Sandbox Code Playgroud)
包版本
我正在开发一个目前创建了数百个对象的应用程序.
是否可以确定(或近似)对象(类实例)分配的内存?
据我所知,您只能使用VisualVM配置正在运行的应用程序.
有没有人知道使用VisualVM分析启动和启动Java应用程序的方法?
我确信必须有办法,否则这将是一次重大的疏忽.
希望我只是误读了文档.
谢谢,p.
我使用Visual Studio内置的分析工具,现在每次检出任何文件时,此部分会自动添加到我的解决方案文件中:
GlobalSection(Performance) = preSolution
HasPerformanceSessions = true
EndGlobalSection
Run Code Online (Sandbox Code Playgroud)
我完全删除了所有分析报告,然后从此解决方案中删除了所有源代码控制文件的本地副本并更新到最新版本.任何结账后此部分仍在*.sln文件中.
其他未使用过prfiler的队友没有这个问题.有没有人有任何想法?
profiling ×10
.net ×2
c# ×2
java ×2
performance ×2
asp.net ×1
command-line ×1
cprofile ×1
expression ×1
javascript ×1
jvm ×1
kcachegrind ×1
memory ×1
object ×1
python ×1
sql-server ×1
visualvm ×1
w3wp ×1