服务器CPU使用率高如何优化?

.net网站多用户同时访问导致服务器CPU使用率过高该怎么优化啊?才模拟了10个用户就94%了…用的虚拟空间,大家有什么优化建议呢?在此谢过各位大神了!图片图片

这个问题需要具体分析一下。主要看项目运行的瓶颈在什么地方?1.业务层的计算?2数据库的数据处理 3,是否站用CPU进行绘图,文件输出等。然后看是否进行
进一步的优化。针对分析出的结果然后找对应的解决方案。

可以看看用火焰图来分析,然后调试CPU:

如何使用火焰图调试性能问题(并在服务器上节省下6.6万美元)

假设下面的火焰图对应呈现上图中央处理器利用率飙升的时段。在此高峰期间,服务器的中央处理器的使用情况如下:

  • Foo()消耗的时间是75%
  • Bar()消耗的时间是25%
  • 10万美元的服务器成本

您可把火焰图视为超详细的饼图,其中:

  • 火焰图的宽度代表着整个时段
  • 每个节点代表一个功能
  • 最大的节点占用了大部分中央处理器资源
  • 每个节点被其上方的节点调用

在这种情况下,’foo()’ 占据了整时间范围的75%,因此我们可以改进`foo()`及其调用的函数来减少中央处理器的利用率(并节省$$)。

用Pyroscope工具创建火焰图和表格

为了用代码重现上文的例子,我们将使用Pyroscope工具 — 专门针对性能调试问题提供持续的性能分析,并且是开源。

为了模拟服务器,我写了 ’work(duration)’ 函数,该函数在该持续时间段内模拟工作。这样,我们就可以通过下述代码构建火焰图,来复现’foo()’ 所用的75%时间和 ‘bar()’ 所用的25%时间:

 # 模拟每次迭代中央处理器的时间
def work(n):
    i = 0
    while i < n:
        i += 1

# 模拟中央处理器运行7.5秒
def foo():
    work(75000)

# 模拟中央处理器运行2.5秒
def bar():
    work(25000)

 

然后,假设你进行了代码优化,把 ‘foo()’ 的时间从75,000降到8000,但其它代码不变。新代码及火焰图所示如下:

 # 模拟中央处理器运行0.8秒
def foo():
    # work(75000)
    work(8000)

# 模拟中央处理器运行2.5秒
def bar():
    work(25000)

全文,请参见原文:
如何使用性能分析来调试Python的性能问题 【使用火焰图找出问题根源】
https://blog.csdn.net/SusyYang/article/details/113927192

可以看看用火焰图来分析,然后调试CPU:

全文,请参见原文:如何使用性能分析来调试Python的性能问题 【使用火焰图找出问题根源】
https://blog.csdn.net/SusyYang/article/details/113927192


如何使用火焰图调试性能问题(并在服务器上节省下6.6万美元)

假设下面的火焰图对应呈现上图中央处理器利用率飙升的时段。在此高峰期间,服务器的中央处理器的使用情况如下:

  • Foo()消耗的时间是75%
  • Bar()消耗的时间是25%
  • 10万美元的服务器成本

您可把火焰图视为超详细的饼图,其中:

  • 火焰图的宽度代表着整个时段
  • 每个节点代表一个功能
  • 最大的节点占用了大部分中央处理器资源
  • 每个节点被其上方的节点调用

在这种情况下,’foo()’ 占据了整时间范围的75%,因此我们可以改进`foo()`及其调用的函数来减少中央处理器的利用率(并节省$$)。

用Pyroscope工具创建火焰图和表格

为了用代码重现上文的例子,我们将使用Pyroscope工具 — 专门针对性能调试问题提供持续的性能分析,并且是开源。

为了模拟服务器,我写了 ’work(duration)’ 函数,该函数在该持续时间段内模拟工作。这样,我们就可以通过下述代码构建火焰图,来复现’foo()’ 所用的75%时间和 ‘bar()’ 所用的25%时间:

 # 模拟每次迭代中央处理器的时间
def work(n):
    i = 0
    while i < n:
        i += 1

# 模拟中央处理器运行7.5秒
def foo():
    work(75000)

# 模拟中央处理器运行2.5秒
def bar():
    work(25000)