代码之家  ›  专栏  ›  技术社区  ›  Germstorm Pierre-Alain Vigeant

性能日志提示

  •  0
  • Germstorm Pierre-Alain Vigeant  · 技术社区  · 16 年前

    我正在开发大型数据收集ASP.Net/Windows服务应用程序对,它通过LINQ2Sql使用Microsoft SQL Server 2005。

    编辑: 我主要是寻找应用程序的一部分,可以削弱整个系统时,过度使用。当应用程序的某些部分负载较重时,白天会出现峰值。一些高级日志可以帮助我隔离需要更多关注和优化的部分。

    6 回复  |  直到 16 年前
        1
  •  2
  •   Remus Rusanu    16 年前
        2
  •  1
  •   John Saunders    16 年前
        3
  •  1
  •   Jon Skeet    16 年前

    虽然我还没有亲自尝试过,但它可能值得一看 Gibraltar 它可以和 PostSharp

        4
  •  1
  •   Community Mohan Dere    6 年前

    Red-Gate's Ant's Profiler .

    现在,如果您想收集统计数据以进行监视或趋势分析,那么探查器不是合适的工具。我成功地使用了PerformanceCounters,它让许多第三方工具从应用程序中提取性能信息。

    那么,您试图做些什么来解决性能问题或监视性能问题,以确保在性能问题变得严重之前及时发现问题?

    编辑

        5
  •  1
  •   Stephen Klancher    7 年前

    SQL Server会为您跟踪某些内容,因此请尝试在系统上运行以下查询:

    Wayback Machine: Uncover Hidden Data to Optimize Application Performance

    以下是链接中的示例:

    --Identifying Most Costly Queries by I/O 
    SELECT TOP 10 
     [Average IO] = (total_logical_reads + total_logical_writes) / qs.execution_count
    ,[Total IO] = (total_logical_reads + total_logical_writes)
    ,[Execution count] = qs.execution_count
    ,[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2, 
             (CASE WHEN qs.statement_end_offset = -1 
                THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 
              ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) 
            ,[Parent Query] = qt.text
    ,DatabaseName = DB_NAME(qt.dbid)
    FROM sys.dm_exec_query_stats qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
    ORDER BY [Average IO] DESC;
    

        6
  •  0
  •   Naveen    16 年前

    例如,Linq2SQL使用synci/O,这可能是可伸缩性的一大瓶颈。因为它使用同步I/O,所以windows线程会被阻塞,请求最终会等待。这通常是可疑的,可能不是真的。这是一个 MSDN article 同步I/O如何影响可伸缩性。

    如果CPU是一个问题,那么下一个问题是应用程序CPU绑定?然后你可以使用上面提到的剖析器。还要寻找花费在GC perfmon计数器上的时间,这是另一个常见的嫌疑犯?

    推荐文章