1
kmvan 2014-09-11 15:08:14 +08:00 via Android
网站的流量有多少呢?
|
2
msg7086 2014-09-11 15:13:07 +08:00 2
首先你要分析原因。原因不分析你说个
首先是PHP的负载,如果你网站流量很大,PHP会吃满CPU,这时候妥妥的换好机器去。 然后如果PHP没有吃满的情况下,多数就是PHP连接的第三方服务跟不上了,比如MySQL。 MySQL的qps几乎就是看磁盘性能。像linode这样全SSD的机器,iops轻松上千,请求完全不会跟不上。但是普通硬盘的话,qps有个200那就是运气好,遇上共享HDD,qps跌破20都有可能。结果就是MySQL一堆排队的,PHP也要等着,然后就把PHP进程用光了,于是502/504就出来了。 所以,先说说网站的流量和负载吧。 |
3
aru 2014-09-11 15:21:23 +08:00
非常赞同 @msg7086 的看法,50个php进程不算少了,如果网站不是一天几十万pv的请求,那么就是程序的执行速度太慢了,很有可能受限于数据库等情况
|
4
lzjun 2014-09-11 15:30:12 +08:00
持续关注
|
5
xap OP @msg7086
服务器配置 web server:CPU:2核 内存:4G top - 09:43:42 up 32 days, 18:05, ? users, load average: 0.17, 0.33, 0.35 Tasks: 154 total, 1 running, 153 sleeping, 0 stopped, 0 zombie Cpu(s): 18.6%us, 1.1%sy, 0.0%ni, 79.4%id, 0.0%wa, 0.0%hi, 0.7%si, 0.2%st Mem: 4051060k total, 3862184k used, 188876k free, 396548k buffers Swap: 2097144k total, 92k used, 2097052k free, 667160k cached db server是购买的CDB服务,没写具体配置 只有容量和建议访问次数指标,分别是100G、1500次/秒 腾讯云提供的后台负载显示为:空间占有率12.5%,访问200多次/秒(峰值400多,远低于建议访问次数) 网站跑的是一个游戏 流量不高,每天1-2千人次 平均在线估计100左右,人均操作估计4-5次/分钟左右吧(没用长连接,每次操作ajax 连一次服务器) 如果每次操作算一个pv的话,倒是达到了 @aru 说的一天几十万pv了…… |
6
msg7086 2014-09-12 10:36:41 +08:00
每秒平均200qps挺大了其实。
如果是远程mysql的话,问题会不会出在mysql的网络连接上? |
7
xap OP @msg7086
web、db server都是租的腾讯云,其间的网络连接应该不会有问题吧? 我买的是一般的cdb服务,它最贵的cdb能支持7500次/秒 问了下同事,做了下列操作 netstat -nat |grep 1027 > netlog.text 1027是db server的端口 netlog.text 有3000多行,基本都是TIME_WAIT,只有1行ESTABLISHED 同事说 TIME_WAIT 表示刚断开不久的连接 ESTABLISHED 表示正在执行中的连接 又连续执行了5次 netstat -nat |grep 1027 |grep ESTABLISHED 2次1行 1次2行 1次5行 1次0行 我理解这表明到mysql db的网络连接是很顺畅的,应该可以排除这个问题 |
8
msg7086 2014-09-12 12:24:08 +08:00
那就很难说了。如果db确实能够承受下这个数量的访问的话,那我也不清楚到底哪里有问题了。
只能说等服务器出现502的时候再snapshot下系统状态才能知道了。 毕竟平时很少会出现。不具有普遍性。甚至是短暂攻击导致502也有可能呢。 |