V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
bossmaster
V2EX  ›  Linux

vps 建站, F5 刷新 20 秒,直接 502 了,怎么破?

  •  
  •   bossmaster · 2015-02-27 11:01:53 +08:00 · 9508 次点击
    这是一个创建于 3339 天前的主题,其中的信息可能已经有所发展或是发生改变。

    表现:按住F5刷新网页,不到20秒,网站直接502了。
    vps配置:单核E5,1G内存(512MB内存同样出现此状况),20G硬盘。digitalocean家的。
    系统环境:centos6.5 x32
    软件环境:lnmp一键安装包
    网站程序:wordpress

    刷新时,查看VPS状态,内存一直剩余有三分之一,cpu占用率93%-99%之间,偶尔逼近100%但没到达过。

    从网上搜了一堆关于502的解决方式,配置调整后依然无效。。。。

    请大神指教,谢谢各位。

    第 1 条附言  ·  2015-02-27 14:06:10 +08:00
    很奇怪一件事,个人使用虚拟主机(如某鹰的最低配套餐)都没有出现过F5持续刷新网站502的事情,为何优势明显的VPS会出现呢?
    69 条回复    2015-03-09 10:26:16 +08:00
    my101du
        1
    my101du  
       2015-02-27 11:21:47 +08:00   ❤️ 1
    是军哥的那个lnmp一键安装包么?
    我们现在也在用,以前常502,后来请了一位专门运维的专业人士来检查,调整后有改善。
    加大 php-fpm 同时可运行进程数 + 扩大到更大内存 + 设置php脚本超时时间 + mysql加大cache + CDN缓存静态资源

    你说的 CPU占用率90以上,十有八九是某个php脚本运行了耗时操作,例如我司之前遇到的,当GFW很强或海底光缆抽风的时候,QQ互联插件等需要访问国内服务器的脚本,会造成502,只能强制设置每个php脚本运行30后就超时断开。
    mengskysama
        2
    mengskysama  
       2015-02-27 11:43:36 +08:00
    肯定是这样啊,wp太重了。
    Puteulanus
        3
    Puteulanus  
       2015-02-27 11:52:22 +08:00
    zts1993
        4
    zts1993  
       2015-02-27 11:52:30 +08:00 via Android
    目测wordpress
    esile
        5
    esile  
       2015-02-27 12:47:06 +08:00 via iPhone
    wordpress需要安装cache插件。lnmp默认装完需要修改/etc/my.cnf增加连接数
    bossmaster
        6
    bossmaster  
    OP
       2015-02-27 13:16:27 +08:00
    @my101du 是的。请问你说的“调整后有改善”是不再出现了还是刷新时间变长才会出现啊?
    你说的这几种方式:加大 php-fpm 同时可运行进程数(已加) + 扩大到更大内存(从512MB升级1G) + 设置php脚本超时时间(已设置) + mysql加大cache (已加)+ CDN缓存静态资源(未处理),因为没效,所以发帖来问了。我没有使用国内的第三方服务。感谢。


    @mengskysama 一定会这样吗?我在老鹰主机最低配上搭的wordpress也不会这样啊。。。。

    @Puteulanus 这个帖子之前看过了,回复里涉及的参数调整都尝试过,问题仍然没有解决。而且我测试了多个其它人用VPS建的wordpress站,F5刷新一样502,囧啊
    @esile 谢谢,我先试试看
    Parabola
        7
    Parabola  
       2015-02-27 14:19:25 +08:00
    果然啊,hhvm的没有,军哥的1.1会的,加了静态化和cdn的不会
    mengskysama
        8
    mengskysama  
       2015-02-27 14:25:16 +08:00
    @bossmaster 弄不死那只是压力不够
    虚拟主机不见得比你VPS配置差的,但是你长期占用大量资源肯定给你停了
    再就是可能IP并发上面可能限得比较死

    我刚刚测试了老鹰一样会跪
    你可以用这个压力测试一下

    里面三个变量赋值,就行了。
    g_lst_target = js['target']
    g_target_host = js['host']
    g_thread = js['thread']
    https://github.com/mengskysama/ProxyDDoS
    lxx1
        9
    lxx1  
       2015-02-27 15:16:33 +08:00 via Android
    加缓存就好
    bossmaster
        10
    bossmaster  
    OP
       2015-02-27 15:32:29 +08:00
    @Parabola 感谢,最近准备测试一下hhvm,国内的cdn服务信不过啊,各种状况。。。
    @mengskysama 测试了一下,可能压力不够,只是打开页面变的巨慢,没有直接502,比我的vps靠谱多了
    @lxx1 请问你说的加缓存,是给什么加缓存啊?
    mengskysama
        11
    mengskysama  
       2015-02-27 15:40:16 +08:00
    一般限制下单IP的并发就行了
    http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
    一般人也不会压力测试你吧。。。
    kn007
        12
    kn007  
       2015-02-27 15:53:29 +08:00
    @mengskysama 看起来是好东东,没环境,你能不能对我的站点试试?
    http://kn007.net
    kn007
        13
    kn007  
       2015-02-27 15:56:20 +08:00
    @bossmaster 其实1楼说的没错,你可以看下实际导致502的原因,看php或nginx的log。
    你可以考虑使用缓存,比如mc,对db和obj做缓存。甚至于页面。
    你可以看看我的,随便刷新。。。
    http://kn007.net
    mengskysama
        14
    mengskysama  
       2015-02-27 17:09:24 +08:00
    @kn007 好硬
    bossmaster
        15
    bossmaster  
    OP
       2015-02-27 17:20:31 +08:00
    @mengskysama 是的,准备限制下单IP并发,主要是希望VPS能支撑常规的F5刷新产生的并发。已狠下心把延迟时间调整为之前的3倍,现在刷新不直接502了,换成直接卡半天。。。

    @kn007 老熟人,经常去你博客看你乱喷,加过MC和eAccelerator,也是很无语。为毛你的VPS文章没有一篇比较系统一点的啊?关于VPS配置能不能写篇系统一些详细一些的,比如可以从LNMP环境的搭建开始,然后做过的优化,防CC之类的,直到你安心写文不折腾为止,一次写不完,开个系列也行啊,就像你的开博三年历程一样。太缺这样的干货了。。。
    kn007
        16
    kn007  
       2015-02-27 18:00:05 +08:00
    @mengskysama 完全没有负载。。。
    kn007
        17
    kn007  
       2015-02-27 18:12:07 +08:00   ❤️ 1
    @bossmaster 额,你是?。。多谢关照。
    简单怎么防DDOS和CC,还有其他做缓存,博客以后会慢慢发表吧。希望到时能有所帮助。

    怎么说呢,我之前挺有时间和兴趣,也有人问我问题,也乐意回答。然后现在有几个朋友已经通过给别人维护赚钱了。。。我有点羡慕,他们最少都是100/次收的,大发就是几百块收的,他一直教导我,对小白要宰。。。据大发说,他现在手上帮人搞的阿里云都不少了。

    你也知道博客这么多年一直没有投放广告其他的。一直没有收益,只有支出。我也想看看能不能学习朋友一样,帮人维护弄点外快,不过我又没定主意,很矛盾的心理。

    感觉博客现在没啥人气。发这些也不一定有人看。很头疼。我不像别人会做主题,给博客带来流量,我会的只是php和整个服务器的调优,而css和js就是简单基于一些框架修改。

    到现在一直没定位我的博客,最开始想抒发情感,慢慢又放折腾的文章。但是这么多年了。我在vps的支出都快超过1W,也是各种坎坷走过。我发了历时3年的文章,其实是很痛苦的,如果真的人有人看,有人懂,我都可以不用发这种文章的。我也不知道自己能不能坚持,写这些历程文章的目的就是为了鞭策自己,继续写下去。不过还是很迷茫。

    不好意思,说的有点乱,想起博客,心情复杂。只是希望自己走的路是对的。
    mengskysama
        18
    mengskysama  
       2015-02-27 18:42:00 +08:00
    @kn007
    刚刚我用家里的电脑压力测试来着,好像现在连接太多连不上了。。
    马上到家就关掉,现在不知道还有没有在跑。
    我请求的是搜索好像还是会跪。
    kn007
        19
    kn007  
       2015-02-27 18:49:14 +08:00
    @mengskysama 会不会是因为我重启了mysql
    kn007
        20
    kn007  
       2015-02-27 18:51:06 +08:00
    @mengskysama search确实是个缺口。我看到有负载了0.64 0.90 0.92
    mengskysama
        21
    mengskysama  
       2015-02-27 19:33:58 +08:00   ❤️ 1
    @kn007
    感觉你的博客各方面都挺快的,UI也不错。
    感觉没必要去优化搜索了,我想没人这么无聊去压力测试的。
    kn007
        22
    kn007  
       2015-02-27 19:35:55 +08:00
    @mengskysama 搜索我也不知道怎么优化了,mysql已经是最快了。除非禁用内部搜索,使用外部搜索了。
    mengskysama
        23
    mengskysama  
       2015-02-27 19:39:00 +08:00
    @kn007 如果是数据库瓶颈。可以考虑sphinx,博客这种微量的数据,连分词器都不需要。绝对比mysql模糊搜索快很多。
    kn007
        24
    kn007  
       2015-02-27 20:06:41 +08:00
    @mengskysama sphinx不懂啊。。。主要是
    402645707
        25
    402645707  
       2015-02-27 20:16:21 +08:00 via Android
    搬瓦工一直502。。
    Moker
        26
    Moker  
       2015-02-27 20:22:49 +08:00
    @mengskysama 你那个ss服务也是通过这种方法限制的么
    mengskysama
        27
    mengskysama  
       2015-02-27 20:31:28 +08:00
    @kn007 看着复杂而已,其实就是几行配置,配置好数据源就OK不需要你在优化啥的了,而且和mysql协议兼容的php调用应该挺方便的。

    @Moker 那个用iptables,我在原来帖子里贴过你找找看。不歪楼了。
    linkupmylife
        28
    linkupmylife  
       2015-02-27 20:46:31 +08:00
    SYN FLOOD不502才怪。
    O21
        29
    O21  
       2015-02-27 20:46:51 +08:00
    网址发来我也想试试。、。。
    Janselz
        30
    Janselz  
       2015-02-27 22:10:06 +08:00
    WP太慢太重
    bossmaster
        31
    bossmaster  
    OP
       2015-02-27 22:20:29 +08:00
    @kn007 我一直是匿名潜水,很少冒泡,你发现不了我。另外,自己的博客内容都是和生活相关的,对一些人来说,可能比较让人不高兴,就没有留过博客地址。我以为大发就是卖主题,做设计,接项目,没想到这货还接运维的活。

    其实你的很多文章都很有用啊,没接触过相关内容的人很多,总有一些人会用到。我个人觉得不足的就是,你没有系统的整理归纳一下。别人无法系统的了解相关内容,总是遇到某个问题搜索一下,然后找到了,解决具体的某个问题,太零散了。如果是系统性的,哪怕是入门类的,可以用到的人就多了,浏览量也会很高。另外,文章涉及多个方面不一定不好,你看编程随想,心理学、历史、政治、开发、招聘、读书等等等等,谈的很多,而且还是一个墙外托管在谷歌上的博客,一堵墙挡了多少人的路,浏览量依然巨高。

    赚钱的方式有很多,工作之外的赚钱,也看因缘际会。你想做的话,可以先做起来,无论赚多少。走着走着,路就出来了。其实,由于博客的缘故,你现在已经储备很多东西了,就差走起来。或许你已经在走着了。



    @402645707 我的搬瓦工也是502,和DO的一样,设置延迟之后就不502了,不过也和DO一样,狂刷的时候反应巨慢。

    @linkupmylife 不停的F5刷新也算SYN FLOOD吗?
    kn007
        32
    kn007  
       2015-02-27 22:41:20 +08:00
    @mengskysama 我回头试试
    kn007
        33
    kn007  
       2015-02-27 22:44:25 +08:00   ❤️ 1
    @bossmaster 刷新,这是很简单的CC,甚至CC都不算。502说明你的参数根本没有调优,与你的VPS根本没有结合,而是照抄。你应该去了解你的vps,让他与你的软件更相配。

    大发也算是帮了我一些忙,我帮他是应该的。

    我也不知道怎么走。往后我会将一些方法分享出来,但不要过于期待。。我现在比较忙,比较拖拉。

    其实什么类型博客,都无所谓啦,来者是客。

    至于我博客的出路,我现在不想想太多了。
    kn007
        34
    kn007  
       2015-02-27 22:51:03 +08:00
    @bossmaster 我曾经也是从512M的VPS走过来的。要知道低配置的vps更需要调优。挑优后就跟我现在差不多了。还有如果你用了军哥lnmp的一键安装包,我建议你用0.9的版本,然后更新php、mysql、nginx。我的是自己写一键安装包,涉及的组件比较多。
    extreme
        35
    extreme  
       2015-02-27 23:24:23 +08:00
    PHP嘛,正常现象。
    我用Nginx FastCGI Cache & Varnish解决的。
    现在Webkaka的压力测试,强度最大也无问题。
    bossmaster
        36
    bossmaster  
    OP
       2015-02-27 23:31:32 +08:00
    @kn007 “502说明你的参数根本没有调优,与你的VPS根本没有结合,而是照抄。你应该去了解你的vps,让他与你的软件更相配。”一针见血,说的太对了。vps用了这么长时间,基本上网站跑起来后,我就没怎么管过它,也是无意间发现刷新502的问题,才发现很多基本的设置优化都没做。每天想学的东西很多,感觉时间一直不够用。
    明天按你的意见,换成0.9版再试试,其实一直想全新安装配置,等忙完了这段时间,好好的理一理。
    bossmaster
        37
    bossmaster  
    OP
       2015-02-27 23:33:47 +08:00
    @extreme 感谢,我试试看
    thinkxen
        38
    thinkxen  
       2015-02-27 23:39:39 +08:00 via Android
    http://www.vosent.com/news/2011/09/139.html

    装了之后会好很多,特别是你流量很大的情况下,但是还是可以F5你的登陆页面。

    解决办法是装下csf防火墙。
    kn007
        39
    kn007  
       2015-02-27 23:42:03 +08:00
    @extreme 哈,你这不是双CACHE了。不过你可以利用Varnish可以防护CC,Nginx负责Cache也不错。
    @bossmaster 你也可以考虑这个架构,不过需要多一点内存,1G也可以部署,大并发,varnish会自杀就是了。
    我目前就是Varnish+Nginx+PHP+Mysql+Memcache+Redis这种。varnish前端,负责规则反代+cache,代理nginx,nginx仅cache gravatar头像和google favicon,还有代理php。php与memcache结合处理日常运作和相对有过期时间的数据库缓存,或其他数据缓存。MYSQL和REDIS处理永久化数据,REDIS偏向KEY和CACHE。MYSQL纯DATEBASE。
    kn007
        40
    kn007  
       2015-02-27 23:43:50 +08:00
    @thinkxen 如果是centos之类的,我倒是建议用fail2ban with iptables。个人己见。。。
    mawenjian
        41
    mawenjian  
       2015-02-27 23:59:14 +08:00
    Web服务器调优倒在其次,最简单有效的办法是用WP插件做缓存(比如W3 Total Cache),或者将页面静态化。做到了这一步,基本上就不怕F5持续刷新了。
    如果要求严苛的话,再考虑采用内存级缓存、Web服务器和数据库服务器调优之类的问题。不过一般小站点的话,加个缓存完全足够了吧。
    ztgamer
        42
    ztgamer  
       2015-02-28 04:05:54 +08:00
    CPU占用过高了
    typcn
        43
    typcn  
       2015-02-28 05:13:09 +08:00 via iPhone
    我的单核1g1m带宽国内云,随便刷新/搜索,几百万并发。攻击就算了毕竟带宽贵。

    http://blog.eqoe.cn

    不用 wp 比什么优化都强,真的 ...
    zjgood
        44
    zjgood  
       2015-02-28 07:19:17 +08:00 via Android
    @extreme Varnish cache不是已经就够了吗?为什么要双层cache呢?
    enener
        45
    enener  
       2015-02-28 07:22:14 +08:00 via Android
    环境没配好,我前阵子也用的一键安装包,也出现过类似问题。目前换了AMH几天了,没出现过类似问题。。。
    zjgood
        46
    zjgood  
       2015-02-28 07:24:25 +08:00 via Android
    @kn007 我在想高考完了把以前写的Python博客翻出来改造一番,把MySQL废弃,完全改换为redis ,或者直接把所有post 静态存储成json ,页面通过JavaScript来动态处理。。。
    molinxx
        47
    molinxx  
       2015-02-28 08:04:15 +08:00 via iPhone
    ngx_req_limit
    kn007
        48
    kn007  
       2015-02-28 08:24:20 +08:00
    @zjgood 你那个好啊。。就是功能太少了。而且要用第三方评论吧,记得是
    kn007
        49
    kn007  
       2015-02-28 11:13:19 +08:00
    @mengskysama 你怎么批量生成search/*的?给个config.txt吧。我直接改py,target,写的好长。。。
    Tianpu
        50
    Tianpu  
       2015-02-28 11:20:37 +08:00
    @my101du @mengskysama @Puteulanus @zts1993 @esile @bossmaster @Parabola @lxx1 @kn007 @402645707 @Moker @linkupmylife @O21 @Janselz @extreme @thinkxen @mawenjian @ztgamer @typcn @zjgood @enener @molinxx
    https://www.v2ex.com/t/173440#reply1

    var d=[]; $('.dark').each(function (index, el){var a = $(el); if (a.attr('href').slice(1, 7) === 'member'){d.push('@' + a.text())}}); $('#reply_content').val($.unique(d).join(' '))
    enener
        51
    enener  
       2015-02-28 11:53:30 +08:00 via Android
    mengskysama
        52
    mengskysama  
       2015-02-28 12:30:42 +08:00
    @kn007
    {
    "target": "http://kn007.net/search/",
    "host": "",
    "thread": 100
    }

    r = s.get(target, timeout=2, headers=headers, proxies=proxies)

    import random
    r = s.get(target+str(random.randint(0,9999999)), timeout=2, headers=headers, proxies=proxies)
    这样?
    zhujiceping
        53
    zhujiceping  
       2015-02-28 12:37:06 +08:00
    给wordpress安装个cache插件比如quick-cache,然后你自己试试F5会发现基本没反应。有条件的话再套个CDN就更加好了!
    我的博客一天让人刷40万PV完全感觉不到压力!
    extreme
        54
    extreme  
       2015-02-28 12:54:59 +08:00
    @zjgood Varnish我觉得效果最好,以前用mod_php,17ce测试,物理内存占用会一下子涨几乎1 Gbytes,后来用了Varnish,同样的测试,只有十多Mbytes的物理内存占用变化。
    Nginx缓存没Varnish效果好,不过一起用可以弥补双方的缺点。
    至于什么缺点我现在就很难说出来了,只知道效果非常好。
    kn007
        55
    kn007  
       2015-02-28 13:27:44 +08:00
    @extreme +1,只是varnish最好是1G内存以上,它本身就要1G
    kn007
        56
    kn007  
       2015-02-28 13:28:05 +08:00
    @mengskysama 原来如此
    kn007
        57
    kn007  
       2015-02-28 13:32:20 +08:00
    @mengskysama 我还以为你是定义config.txt。。。到时忘记利用python了。对python不熟,我刚用php形成10000条随机数据,然后丢进去。。。
    notnumb
        58
    notnumb  
       2015-02-28 13:42:59 +08:00
    F5多久都可以,只要有cache或者内存,我自己静态blog就是放到内存里面
    我的VPS是openvz 只有128M
    msg7086
        59
    msg7086  
       2015-02-28 15:37:13 +08:00
    Wordpress裸着用是很慢的。
    kimmykuang
        60
    kimmykuang  
       2015-02-28 15:52:05 +08:00
    @kn007 你的blog右侧Classified Categories一栏,鼠标滑过时子菜单出来的姿势很奇异
    cnbeining
        61
    cnbeining  
       2015-02-28 15:57:16 +08:00
    @msg7086

    裸WP,就加一个super cache.

    如果绕过缓存,直接按住刷新,机器的load很快就飞上8.
    命中缓存,load不超过0.12.

    的确有效。
    kn007
        62
    kn007  
       2015-02-28 16:06:51 +08:00
    @kimmykuang 谢谢,是有点,已有朋友反映。我晚些看怎么改好
    ChenYounG
        63
    ChenYounG  
       2015-02-28 16:29:20 +08:00
    哈哈,我之前也是这样,只要涉及WP涉及数据库操作,PHP进程就会100%占用CPU。
    今天把my.cnf里的log.bin=mysql.bin注释掉之后,感觉快了很多,CPU占用也不会出现瞬间飙到100%

    我是一个小白,我也不知道上面的操作是否有关,也许是凑巧,哈哈,另外我有装了super cache
    shiny
        64
    shiny  
       2015-02-28 16:36:06 +08:00
    几年前我也用同样的方式把 xiami.com 给压502了
    bossmaster
        65
    bossmaster  
    OP
       2015-03-04 14:04:07 +08:00
    @kn007 整体更新成lempa+Memcache,已经完美解决了这个问题。感谢你的方案,有空再试试你的部署方案,准备针对高流量高并发进行优化。

    @mawenjian 正解。wp静态化缓存做好,比优化服务器来的更直接。感谢。

    @ztgamer 是的,突发流量会导致cpu占用率飙到99%,然后直接爆掉。
    @typcn 是的,不过wp整体上比较成熟,扩展性比较强,定制起来也比较容易,所以还是用它啦。
    @enener 面板使用起来确实很方便,我以前也是用面版,只是附带的BUG容易导致服务器被黑,所以只能让服务器安装的软件做到最少。
    @zhujiceping 哈哈,正解。

    @notnumb 已经按照你的意见,缓存到内存里,速度没的说,感谢。

    @msg7086 是的。。。
    @cybelive 是super cache起作用了。。。
    kn007
        66
    kn007  
       2015-03-04 20:41:36 +08:00
    @bossmaster 我好奇你的lempa是什么lamp+e什么?eA?还是你指emlog。反正你只需要记住一点,尽量让客户端优先读到位于内存的Cache
    xiahuan
        67
    xiahuan  
       2015-03-07 11:11:42 +08:00
    可以试试 www.ltanmp.com 这个据作者说是用于生产环境的 调优了内核与一些常用软件参数。
    bossmaster
        68
    bossmaster  
    OP
       2015-03-09 09:54:59 +08:00
    @kn007 抱歉,这个E指的是Nginx(来源于发音同engine x ,lempa=Linux+Nginx+Apache+MySQL+PHP),把静态内容和动态内容处理分开了,就是你用过的。掉书袋了,见笑。

    @xiahuan 感谢。对于把Android二次开发成所谓的yunos,还死皮赖脸说成自主开发的OS的企业,有种本能的反胃,Tengine又是这样一个玩意,不用也罢。
    kn007
        69
    kn007  
       2015-03-09 10:26:16 +08:00
    @bossmaster 哦,原来如此。没用lnmpa,lnmp对我已经足矣~

    同反胃这种玩意。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5473 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 03:03 · PVG 11:03 · LAX 20:03 · JFK 23:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.