zoukankan      html  css  js  c++  java
  • 如何检查具体是哪个网站造成服务器CPU巨大

    我们在“服务器访问缓慢的处理办法”这篇技术文章中分析了造成服务器很慢的几种原因,其中一个很常见的原因就是服务器的CPU100%。那么对于服务器上运行着几十个甚至几百个的网站而言,怎样查到具体是哪个网站造成的呢?
    1、首先,我们打开任务管理器,按照进程名称排序,发现其中有很多w3wp.exe这样的进程名称,其实这每个w3wp.exe就对应着每个进程池。我们可以很快发现哪个进程池占用了最大的CPU,也可以找到其对应的PID编号(PID编号在“查看->选择列”里面勾选上就可以显示出来了)。那么下一个关键问题就是如何建立w3wp.exe和IIS中进程池的对应关系呢?

    2、我们在桌面上新建一个文本文档,内容如下:
    '显示所有应用程序池当前PID及应用程序池名
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")   
    Set ps = objWMIService.ExecQuery("select * from Win32_Process where Name='w3wp.exe'")   
    Str="AppPoolId  AppPoolName" & vbcrlf  
    For Each ps in ps   
        Str = Str & "  " & ps.ProcessId & Space(10-len(ps.ProcessId)) & GetAppPoolId(ps.commandline) & vbcrlf  
    Next  
    WScript.Echo Str
    Function GetAppPoolId(strArg)   
        On Error Resume Next  
        Dim Submatches,strPoolId,re,Matches
        Set re = New RegExp  
        re.Pattern = "-ap ""(.+)"""  
        re.IgnoreCase = True  
        Set Matches = re.Execute(strArg)   
        Set SubMatches = Matches(0).Submatches   
        strPoolId = Submatches(0)   
        GetAppPoolId = strPoolId   
    End Function
    然后保存,并重命名为getapp.vbs。注意必须是vbs文件后缀,再双击执行,就可以弹出一个PID和进程池名称的对应表.

    3、这样我们就可以断定具体哪个进程池造成服务器CPU巨大了。下面问题接着出来了,由于每个进程池中放的网站都不止一个,那么怎么知道是具体哪个网站造成的呢?在这里,朝暮数据要提醒您,我们在分配进程池中的网站时,一定要对每个进程池中的网站个数做出规定。比如规定一个进程池放15个网站,部分重点客户放到独立进程池中,也就是一个进程池中只放一个网站。这样一旦出现问题,也就最多影响15个网站,也方便在这些网站中查出罪魁祸首。如果把全部网站都放到一个进程池中,那就头痛了,查问题的时候非常不方便,一旦这个进程池出问题,影响的网站数量也非常多。
    下面,我们还是尽快把这个有问题的进程池给停止了,然后在任务管理器中结束对应的进程,这时服务器的CPU就马上降下来了。
    4、停止几分钟后,我们到C:\WINDOWS\system32\LogFiles\HTTPERR这个目录中,找到最新生成的错误日志,打开分析。比如我们禁用的进程池名称是AAA,那么搜索Disabled AAA,就可以查到关闭进程池后,有哪些网页被访问过了,而这些访问的网页其中某个就是造成问题的元凶。比如下面这行,很明显就是一个ddos.php的文件造成的。其根本原因是客户没有把程序升级到最新版本,而被黑客植入了这个代码,造成服务器对外发包,同时CPU巨大。最好是清空整个网站,然后升级到最新版本的程序。
    80 HTTP/1.1 GET /plus/ddos.php?host=112.101.64.75&port=80&time=60 503 785 Disabled AAA
  • 相关阅读:
    避免PHP分页中的分页出现非整数的简化代码
    PHP restful 接口
    PHP 连接数据库
    PHP图片上传
    cookie记录用户最后登录时间
    解决 各浏览器不支持display:flex的最简单办法
    PHP 生成验证码
    php文件上传
    H5图片异步拖拽上传
    H5播放器有时获取duration的值为NaN?
  • 原文地址:https://www.cnblogs.com/bluecobra/p/2684358.html
Copyright © 2011-2022 走看看