帮我看下这些日志吧好心人

2016-03-08 10:10:41 +08:00
 hoythan
我是昨天发帖子说:救命,我可能要被老板砍死了。的那位。我经过一天的尝试,基本已经刨除了带宽的问题。因为现在网站的图片内容都已经在云上依旧是会卡的。
而且在深夜 3 点也会死机。我今天拿出了服务器的日志文件,求大家帮我看看 。跪谢了

服务器环境是 php7 和 mysql5.7 4GB 4MB 独立带宽的阿里云 4 核服务器。

另外我发誓一分积分没赚,不论是吐槽还是帮忙的所有人我都点了感谢。跪谢跪谢,不然就真的死了。已经被点名批评。

http://pan.baidu.com/s/1qXrUhGg

yr6t
14881 次点击
所在节点    Linux
109 条回复
asddsa
2016-03-08 17:06:39 +08:00
还是昨天那句话,你重新一步一步架个 LNMP ,这情况真的会好转的。。。
imlewc
2016-03-08 18:26:19 +08:00
先开 php-slow log 看看是什么地方的问题 log 有时候很重要
ZGLHHH
2016-03-08 18:45:01 +08:00
1.图片、 js 、 css 等静态资源用 cdn 分发( upyun 、 qiniu 均可)
2.套个 CDN
3.阿里云的话建议用云磁盘,本地磁盘的 I/O 低的可怜
4.阿里云的均衡负载
5.站库分离,数据库用云数据库
6.个人不推荐阿里云,建议买国外的机器,便宜又稳定,还是大水管。 [推荐 DO 、 Linode 、 Vultr
ten789
2016-03-08 19:27:42 +08:00
两天了还没被老班砍死么 2000 块钱啥都干的破事
fy
2016-03-08 19:42:32 +08:00
楼主你这还没解决?昨天就看到说你图太大,但是加个 CDN 就完事了啊?
填一下域名,改动一下解析,也就 5 分钟的事情
zencoding
2016-03-08 20:14:18 +08:00
一、检查磁盘使用
二、监控故障期 I/O
阿里云的磁盘 I/O 很有趣,是跟着你的实例配置走的
hoythan
2016-03-08 20:37:30 +08:00
完结此贴,感谢大家的支持,初步的诊断是 sql 语句导致的问题。但是具体的还没有排查出来,今天已经更换了新的 lnmp 环境,并安装了监控探针,希望明天可以出结果,如果没有问题,那么我就从工资里拿出一两百块发支付宝红包感谢各位,如果还是有问题,呵呵...大家后天在网易新闻社会板块找找我好了。
debuge
2016-03-08 21:25:43 +08:00
把问题和尽可能多的信息放上来,或者搭建一个非正式运行的环境将问题重现,请大家一起讨论。
另外,轻松一点, 这只是你职业生涯可能遇到的无数问题中的一小个而已,不要想的太严重
mengzhuo
2016-03-08 21:40:59 +08:00
你刚入职吧……这种事老板不会杀了你的,最多炒了你换个人罢了。

ps 删光某网站的数据库的我还不是活得好好的~(逃
ZGLHHH
2016-03-08 21:43:45 +08:00
补:
套 cdn 建议是国内 cdn ,源站国外,否则很容易会被 GFW 阻断连接
hoythan
2016-03-09 00:08:09 +08:00
@mengzhuo 主要是我心理上过意不去…
quericy
2016-03-09 00:10:31 +08:00
如果觉得是 mysql 问题就开启慢查询日志然后导出来瞅瞅
或者在非生产环境跑个并发测试看看
冷静下来,问题终归会解决的

@mengzhuo 噗,这样真的大丈夫?
hoythan
2016-03-09 00:19:52 +08:00
@quericy 嗯嗯已经开启慢查询,就等着死机了。
Peanut666
2016-03-09 00:36:45 +08:00
楼主加油,一起学习~~
iCantus
2016-03-09 09:05:51 +08:00
网址多少
mengzhuo
2016-03-09 09:14:55 +08:00
@quericy 实习的时候捅的篓子,
delete 忘了加 where limit
删了近十年的数据,当时就懵 b 了,然后被赶到的经理痛骂一顿
dba 知道我是实习生,就说了句:下次别忘了加 limit 。
就跑去恢复备份了。
yunying
2016-03-09 09:41:04 +08:00
@mengzhuo

有故事的人
mhycy
2016-03-09 09:56:46 +08:00
给大家说说昨天的排查过程吧,因为干扰源存在,问题未最终解决。

开头时候服务器环境的不熟悉浪费大量时间。。
找配置文件,塞个 htop ,塞个 iftop ,因为 CentOS 仅仅在内网用过(无外网访问权限),傻乎乎的就去找包了,结果 CentOS 7 ,半天没找着,最后 yum 发现都能用

翻查 mysql 的实际调用配置文件位置浪费了不少时间。。

======================================

刚开始看在本页页头的日志文件,感觉应该是 PHP-FPM/MySQL 阻塞 /挂掉,所以从这个地方入手。
先把看起来有问题的性能参数都给改了, MySQL 的查询缓存开大点。( 4G 内存,大着呢)
压测发现 PHP-FPM 稳定承受所有请求, CPU 占用率未有明显异常,无错误报告。
但同时 MySQL CPU 占用跑满,遂排查。。

首先把 MySQL 的慢查询开了,超时 1 秒,记录日志
压测 50 线程,力求打满。。。然并卵,机器的带宽就 4M ,折算下来理论 512KB/S
(事实上跑了 3M 的带宽,结果还是个位数的每秒响应)
MySQL 占用继续跑满,但是慢查询没任何异常(未有任何一条数据输出)。
多次测试情况一致。。。页面几乎无反应( 20 秒+)

压测过程中 show processlist; 命令查看当前 SQL 字串,存在大量查询正在 Creating sort index.
"SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id ........."
(说好的缓存呢?)

翻查数据库,数据是分类类目、 tag 之类的东西
遂翻查代码,首页大量调用 get_post_meta / get_the_category, 对 WP 不熟,但至少反查上去这两个嫌疑最大,结合上面那条 SQL 提到的那些表的数据,看上去,似乎,首页的大部分文章,都调用了一次。。。

传说中的 97 次 SQL ?

这个算是其一,另外在 show processlist;过程中存在大量的 ALERT TABLE 请求。。。
逻辑告诉我,大概是楼主在导数据吧。。。

。。。。。
。。。。
。。。
。。



但是在多次压测的时候我还能看到这东西。。。囧
复制一行,问楼主:
"ALTER TABLE vp_msg CHANGE COLUMN Status Status TINYINT NOT NULL"
"长这样的 mysql 语句你有印象么"

"我知道,这是我自己创建的数据表"
"这句有问题吗"

"...为啥我每次访问首页都能看到这行东西 囧"

..............

屏蔽过后,压测稳定了,至少能稳稳当当的在我可接受的时间内跑完全程,并发 10 (但依旧占用 100%)
在那堆查询问题解决之前,无法进入下一步排查,算是干扰源。

以上就是昨日下午排查的结果。
h4lt
2016-03-09 10:12:40 +08:00
楼上厉害啊。
学习下测试流程。
mengzhuo
2016-03-09 10:19:33 +08:00
@mhycy
wordpress 自身就有优化语句和索引了
难道楼主是自己写 SQL 的么……难为他和你了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/261839

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX