V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
reyals
V2EX  ›  问与答

网站打开很慢,php-cgi 占用 CPU,CPU 长期 100%,求解?

  •  
  •   reyals · 2014-08-24 23:36:34 +08:00 · 8534 次点击
    这是一个创建于 3535 天前的主题,其中的信息可能已经有所发展或是发生改变。
    top - 23:30:47 up 56 min, 1 user, load average: 3.06, 3.16, 3.59
    Tasks: 76 total, 6 running, 70 sleeping, 0 stopped, 0 zombie
    Cpu(s): 96.3%us, 3.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.7%si, 0.0%st
    Mem: 1020384k total, 322148k used, 698236k free, 16096k buffers
    Swap: 1044184k total, 0k used, 1044184k free, 72168k cached

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    998 www 20 0 235m 36m 4344 R 19.6 3.6 8:44.12 php-cgi
    999 www 20 0 235m 36m 4288 R 19.6 3.6 8:44.00 php-cgi
    12407 www 20 0 229m 31m 3680 R 19.6 3.2 2:18.38 php-cgi
    1001 www 20 0 233m 34m 4292 R 19.3 3.5 8:44.08 php-cgi
    1002 www 20 0 231m 32m 4340 R 19.3 3.3 8:43.82 php-cgi

    大部分时间是这样的状态

    lnmp,wordpress跑个小博客,每天IP才5000K

    追踪进程
    ll /proc/998/fd/
    lrwx------ 1 www www 64 Aug 24 23:32 0 -> socket:[8205]
    l-wx------ 1 www www 64 Aug 24 23:32 1 -> pipe:[8210]
    l-wx------ 1 www www 64 Aug 24 23:32 2 -> pipe:[8211]
    lrwx------ 1 www www 64 Aug 24 23:32 3 -> socket:[147091]
    lrwx------ 1 www www 64 Aug 24 23:32 4 -> socket:[147095]

    服务器监控,很有规律的,每隔10来分钟,CPU就下来几分钟,然后又100%了
    11 条回复    2014-08-25 21:56:49 +08:00
    rainysia
        1
    rainysia  
       2014-08-25 09:50:33 +08:00
    才 5000K IP.

    100%你还想肿么样
    reyals
        2
    reyals  
    OP
       2014-08-25 10:17:15 +08:00 via iPhone
    @rainysia 什么意思啊?之前9000ip都很正常的。突然就这样了。
    ChiChou
        3
    ChiChou  
       2014-08-25 10:46:27 +08:00   ❤️ 1
    你的网站很有可能被黑,挂了 PHP DDOS 木马。简单说就是基于 php 的发包函数,用你的 vps 和流量对外发动攻击。

    如果你能管理 php.ini 的话,建议临时禁用 socket 系列函数,然后查看日志,基本上就可以定位到木马位置。
    reyals
        4
    reyals  
    OP
       2014-08-25 10:49:13 +08:00 via iPhone
    @ChiChou 先感谢,马上试试。
    reyals
        5
    reyals  
    OP
       2014-08-25 10:50:15 +08:00 via iPhone
    @reyals 请问主要查看php日志还是nginx?
    jk2r
        6
    jk2r  
       2014-08-25 11:19:27 +08:00
    0. 还是得弄一个干净的php脚本(或者新的web),跑一个benchmark,看机器是不是不行。
    1. 先看一下access_log,看有没有异常请求量很多的代码。再看一下,有没有哪些网页,request_time很长的,如果有跳到2。
    2. 手工debug代码,二分法查什么地方卡了。
    3. strace -vv 一下cpu多的进程都在干嘛,发log上来。
    reyals
        7
    reyals  
    OP
       2014-08-25 11:28:02 +08:00
    access_log确实很异常,大量的403和404

    这些请求的网站都不是我的站。

    219.148.108.132 - - [17/Aug/2014:09:31:59 +0800] "GET http://www.atmji.com/checkip.aspx HTTP/1.1" 404 564 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" -
    219.148.108.132 - - [17/Aug/2014:10:02:10 +0800] "GET http://www.qhdjrfw.com/checkip.aspx HTTP/1.1" 404 564 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" -
    219.148.108.132 - - [17/Aug/2014:10:35:39 +0800] "GET http://www.atmji.com/checkip.aspx HTTP/1.1" 404 564 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" -
    219.148.108.132 - - [17/Aug/2014:11:06:21 +0800] "GET http://www.atmji.com/checkip.aspx HTTP/1.1" 404 564 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" -
    219.148.108.132 - - [17/Aug/2014:11:38:00 +0800] "GET http://www.data321.com/checkip.aspx HTTP/1.1" 404 564 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" -
    jk2r
        8
    jk2r  
       2014-08-25 15:11:44 +08:00   ❤️ 1
    404这个是抓站还是爬虫吧,从你日志看都是219.148.108.132。统计一下top10,不认识的,封了先看看情况。
    reyals
        9
    reyals  
    OP
       2014-08-25 17:20:58 +08:00
    @jk2r 封了一些IP,看看情况。

    不停的请求,就能把CPU搞挂,有这种攻击方式吗?

    CPU100%的时候,网络流量也不大啊,不到1Mb
    jk2r
        10
    jk2r  
       2014-08-25 19:26:17 +08:00
    不停请求,你也可以理解为DOS呗。PHP跑程序,当然就慢了。

    代码级,fastcgi缓存、php页面级缓存(wordpress Memcached插件),都能缓解。

    程序员范儿,可以cron扫访问日志找到TOP N的垃圾请求,iptables封IP。当然也可以lua。

    不是有意攻击的话,还是有很多解决方法的。

    PS:你的blog有5000k,日均500w IP?
    reyals
        11
    reyals  
    OP
       2014-08-25 21:56:49 +08:00
    @jk2r 恩恩
    逗比了,是5K每天。。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3145 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:46 · PVG 20:46 · LAX 05:46 · JFK 08:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.