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

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

  •  
  •   hoythan · 2016-03-08 10:10:41 +08:00 · 14784 次点击
    这是一个创建于 3174 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我是昨天发帖子说:救命,我可能要被老板砍死了。的那位。我经过一天的尝试,基本已经刨除了带宽的问题。因为现在网站的图片内容都已经在云上依旧是会卡的。
    而且在深夜 3 点也会死机。我今天拿出了服务器的日志文件,求大家帮我看看 。跪谢了

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

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

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

    yr6t
    109 条回复    2016-03-10 09:59:55 +08:00
    1  2  
    mhycy
        1
    mhycy  
       2016-03-08 10:16:06 +08:00   ❤️ 2
    我觉得你直接找个人给你排查还更快一些。。
    或者自己尝试把应用搬到别的机器进行测试。。
    hoythan
        2
    hoythan  
    OP
       2016-03-08 10:18:42 +08:00
    网站正常的时候,访问是非常非常快的,基本上 0.45 秒加载完毕,但是卡的时候就坑爹了, 10 分钟都可能进不去!
    ![未命名.JPG]( https://ooo.0o0.ooo/2016/03/07/56de3790bb384.jpg)
    dark456852
        3
    dark456852  
       2016-03-08 10:21:34 +08:00   ❤️ 1
    老板不是应该要请个运维的吗?
    mhycy
        4
    mhycy  
       2016-03-08 10:21:51 +08:00   ❤️ 1
    @hoythan
    那么现在的问题是:
    环境反应没问题,探针加载极其迅速,但是应用上线以后在一段时间过后会出现等待时间极长的问题。

    这样?
    jarlyyn
        5
    jarlyyn  
       2016-03-08 10:25:18 +08:00   ❤️ 1
    不看代码看日志有啥意思……

    几个问题

    1.php 的 opcache 开了没有。

    2.首页之类的页面,程序里有没有启用合适的缓存。

    3.数据库有没有相应的索引优化。

    一般这三点都做了,就只剩下业务逻辑的问题来了吧?
    mhycy
        6
    mhycy  
       2016-03-08 10:26:37 +08:00   ❤️ 1
    现在等待时间 500-600ms 还算正常
    yangqi
        7
    yangqi  
       2016-03-08 10:28:16 +08:00   ❤️ 1
    你发 access.log 有什么用

    另外一个贴有人说过了,你图片优化太烂了,一个头像图片都要 110K 了,随便一个页面就要 3 , 4MB 大小。再加上小水管访问的人多了肯定不行。很多连接都要等待长时间下载图片,如果 nginx 配置的连接数太小的话,新连接就要等。基本肯定和 php 和 mysql 没什么关系,带宽和 nginx 的配置

    网站的图片还是在 wp-content/uploads 里面,怎么跑云上了
    lynnworld
        8
    lynnworld  
       2016-03-08 10:31:08 +08:00   ❤️ 1
    nginx 的日志把 request_time 和 upstream_response_time 记录下来。然后看是具体哪个请求会慢。
    hoythan
        9
    hoythan  
    OP
       2016-03-08 10:34:05 +08:00
    @mhycy 是的没错。

    我现在在这个日志里看到了大量的

    *2 connect() to unix:/tmp/php-cgi.sock failed (2: No such file or directory)
    @yangqi
    abscon
        10
    abscon  
       2016-03-08 10:35:09 +08:00   ❤️ 1
    “另外我发誓一分积分没赚”——当然大家也没赚一分钱工资不是么……

    我觉得真正的好心人不应该帮你解答。分类讨论两种可能

    1. 你经过自己的努力能解决问题
    2. 你经过自己的努力,不能解决问题

    对于情况 1 ,帮你的话你会形成依赖,有什么问题就发到网上众筹,而不是尝试通过学习提高自身姿势水平
    对于情况 2 ,还是转行为妙,否则好心人帮了你的话,对你老板或者对网站的用户来说就不是好心人。

    当然江湖救急除外
    mhycy
        11
    mhycy  
       2016-03-08 10:37:34 +08:00   ❤️ 1
    @abscon
    说实在的,无论一二,现在的问题是对于外界而言信息不足。想帮都没法帮。。。
    hoythan
        12
    hoythan  
    OP
       2016-03-08 10:37:42 +08:00
    @abscon 我研究了一晚上,人都要 sb 掉了。我解决不了这个问题啊。
    现在我备用方式是再买一台服务器安装低版本的 php 和 mysql 再切换过去,但是我担心还是出现这样的问题。
    zeac
        13
    zeac  
       2016-03-08 10:38:41 +08:00   ❤️ 1
    前段时间曾经遇到过这种事,同样的系统,在测试服务器上久的时候要等将近 10 分钟,快的话也要 2 分钟才打开,但是到本地只要 1 分钟左右,

    找了两天原因,各种调试,最后用 Xdebug 跟踪发现是一个 curl_exec()等待太久,

    建议如果是 PHP 问题,你可以考虑用 Xdebug 分析下到底慢在哪,如果是静态资源文件拖慢的,上一贴已经很多人给出了解决方案
    bk201
        14
    bk201  
       2016-03-08 10:41:08 +08:00   ❤️ 1
    你这信息太少没法帮忙,上个帖子都有人说了。基本上有什么数据都应该拿出来,服务器系统占用等等。
    mhycy
        15
    mhycy  
       2016-03-08 10:43:19 +08:00   ❤️ 1
    @hoythan
    结合错误日志, ab 压力测试
    别的不知道,至少知道一件事:你的数据库配置有问题
    Liang
        16
    Liang  
       2016-03-08 10:44:35 +08:00   ❤️ 1
    建议先将图片都 404 ,排查一下。
    likuku
        17
    likuku  
       2016-03-08 10:47:23 +08:00   ❤️ 1
    一个页面 3M~4M 。。。配合 4M 小水管,只有呵呵了。
    surfire91
        18
    surfire91  
       2016-03-08 10:50:13 +08:00   ❤️ 1
    这会 500 了
    愿意给服务器权限和源码,可以帮你看看
    Infernalzero
        19
    Infernalzero  
       2016-03-08 10:50:37 +08:00   ❤️ 1
    进 mysql,SHOW FULL PROCESSLIST 看一下当前哪些 sql 语句有问题
    如果你有几张表数据量比较大的话,查询语句不当很有可能直接搞跪
    另外,看了下你的 nginx 错误日志以及内存占用高的情况,试试在 location 模块中添加这个配置后重启试试
    proxy_buffering off;
    WangYanjie
        20
    WangYanjie  
       2016-03-08 10:51:20 +08:00   ❤️ 1
    访问地址呢?死机是什么意思?
    zakokun
        21
    zakokun  
       2016-03-08 10:54:56 +08:00   ❤️ 1
    你不是平面设计师吗...为什么要写代码甚至搞运维??
    mhycy
        22
    mhycy  
       2016-03-08 10:55:52 +08:00   ❤️ 1
    建议:
    1 、检查 PHP-FPM 配置
    2 、检查 MySQL 配置

    具体项目都是子进程连接数等并发处理能力相关的部分。
    刚刚的某几个无法访问是我用 ab 压出来的, 10 个并发挂掉(响应速度不到 10 个)
    测试目标地址就是首页
    lairdnote
        23
    lairdnote  
       2016-03-08 10:59:52 +08:00   ❤️ 1
    需要有偿的协助不?
    lxf1992521
        24
    lxf1992521  
       2016-03-08 11:04:47 +08:00   ❤️ 1
    建议楼主付费请人解决;
    或者建议领导找个运维人员吧
    likuku
        25
    likuku  
       2016-03-08 11:07:50 +08:00   ❤️ 1
    @zakokun [你不是平面设计师吗...为什么要写代码甚至搞运维??]我身边就有活生生的例子...
    hoythan
        26
    hoythan  
    OP
       2016-03-08 11:08:16 +08:00
    @Infernalzero
    数据库是普通的 wordpress 数据库,容量大概只有 30mb 左右。

    @mhycy
    PHP-FTM 配置:

    [global]
    pid = /usr/local/php/var/run/php-fpm.pid
    error_log = /usr/local/php/var/log/php-fpm.log
    log_level = notice

    [www]
    listen = /tmp/php-cgi.sock
    listen.backlog = -1
    listen.allowed_clients = 127.0.0.1
    listen.owner = www
    listen.group = www
    listen.mode = 0666
    user = www
    group = www
    pm = dynamic
    pm.max_children = 150
    pm.start_servers = 20
    pm.min_spare_servers = 6
    pm.max_spare_servers = 30
    request_terminate_timeout = 100
    request_slowlog_timeout = 5
    slowlog = var/log/slow.log

    mysql 怎么查看配置是否正常?

    如果上淘宝找人解决的话,我应该搜索什么关键词?
    ershisi
        27
    ershisi  
       2016-03-08 11:08:32 +08:00   ❤️ 1
    图片还都在本地。没有在云上。
    这么看性能压力应该在服务器这一块,你调优一下 php 配置。然后调优一下 mysql 连接数和短连接。
    ToughGuy
        28
    ToughGuy  
       2016-03-08 11:08:44 +08:00   ❤️ 1
    给服务器 ssh 可以上去帮你分析下。
    hoythan
        29
    hoythan  
    OP
       2016-03-08 11:10:55 +08:00
    @lairdnote
    @lxf1992521

    请问有偿大概多钱?整个网站自己制作加一切配制我也才赚了 2000 块。如果太多我肯定承受不了。
    murusu
        30
    murusu  
       2016-03-08 11:14:40 +08:00   ❤️ 1
    确认你的机子没被人种马吗?
    我看到大量形如
    GET /p.php?act=rt&callback=jQuery1706147779076103181_1457315390893&_=1457316450363
    的访问
    lairdnote
        31
    lairdnote  
       2016-03-08 11:15:31 +08:00   ❤️ 1
    哎。。。才赚 2000 阿。。。算了。。无偿吧。。。你 qq 多少
    hoythan
        32
    hoythan  
    OP
       2016-03-08 11:16:04 +08:00
    @murusu 不是吧,但是网站目录下没有看到这个文件呀?
    hoythan
        33
    hoythan  
    OP
       2016-03-08 11:16:41 +08:00
    @lairdnote 11222344 感谢
    demo
        34
    demo  
       2016-03-08 11:17:07 +08:00   ❤️ 1
    楼主可以用 Xdebug + WebGrind 分析下
    murusu
        35
    murusu  
       2016-03-08 11:18:25 +08:00   ❤️ 1
    @hoythan 你去翻翻 access 的记录,最后那里一大段都是这样的访问
    lairdnote
        36
    lairdnote  
       2016-03-08 11:18:31 +08:00   ❤️ 1
    加了 @hoythan 6300623**
    lux182
        37
    lux182  
       2016-03-08 11:19:11 +08:00
    我觉得可能是 IO 问题,或是 tcp 端口占用未释放,导致端口开太多卡死
    mhycy
        38
    mhycy  
       2016-03-08 11:19:42 +08:00   ❤️ 1
    @hoythan
    其实,要是你愿意放多点信息,估计很多人无偿都愿意给你搞。。囧

    其实现在思路感觉挺明确的:
    首先,排查 PHP-FPM 问题,在运行过程中 HTOP 查看是否进程数过多造成瓶颈(处理完了没释放)。
    接着,排查 MYSQL 的连接问题,看多连接并发是否会阻塞或者断掉。

    这两点先行排查。
    不管有没有问题把过程放出来。
    这样至少能知道你现在的排查状态,也能在提问中体现出自身的努力。
    mhycy
        39
    mhycy  
       2016-03-08 11:20:10 +08:00   ❤️ 1
    @murusu
    p.php 是他自己的探针
    hoythan
        40
    hoythan  
    OP
       2016-03-08 11:22:27 +08:00
    @demo
    @mhycy
    @lux182
    @lairdnote
    @murusu
    @demo

    其实我只是一个前端设计师,这些我真的不理解,我通宵一天了,我好累,请问我要从哪些资料入手,拜托大家了,问题解决了给大家发红包。
    Infernalzero
        41
    Infernalzero  
       2016-03-08 11:22:59 +08:00   ❤️ 1
    @hoythan
    你这点访问量和 mysql 配置关系不大,而且只有这点数据量的话那慢 sql 的可能性不大了,不过你还是应该登进去确认下当前数据库的情况啊,看看当前所有查询耗时多久

    鉴于你阿里云的配置比较低而且内存占用高, nginx 的 buffering 关掉看看效果
    mhycy
        42
    mhycy  
       2016-03-08 11:23:22 +08:00   ❤️ 1
    @hoythan
    把 QQ 加上再说。。囧
    aldnoah
        43
    aldnoah  
       2016-03-08 11:25:41 +08:00   ❤️ 1
    感觉信息不够啊。
    lux182
        44
    lux182  
       2016-03-08 11:28:21 +08:00   ❤️ 1
    @hoythan netstat -a 看看端口占用情况
    czzhengkw
        45
    czzhengkw  
       2016-03-08 11:30:08 +08:00   ❤️ 1
    oneapm ,能看出大部分问题,包括 curl_exec(),慢查询, session 锁等问题……
    BOYPT
        46
    BOYPT  
       2016-03-08 11:30:45 +08:00   ❤️ 1
    是 wordpress 吧?三管齐下:
    1.使用缓冲插件,先试试 w3total cache, 效果应该立竿见影的
    2.查看 mysql slow log, 找出慢查询,但通常都是 wp 自身的查询,在 w3 的缓存下理论上会减少的
    3.查看 php 的 slow log ,一般会爆出慢调用栈,贴出 log 让其他人帮你看
    hoythan
        47
    hoythan  
    OP
       2016-03-08 11:33:39 +08:00
    @BOYPT 如果是正常状态的话,网站打开速度非常快, lairdnote 正在帮我查看问题,如果解决了,我把原因和方法贴出来给大家。
    murusu
        48
    murusu  
       2016-03-08 11:34:17 +08:00   ❤️ 1
    @hoythan 看了 nginx 的记录,先从 PHP-FPM 去查是正路,按 @mhycy 说的去做吧
    mahone3297
        49
    mahone3297  
       2016-03-08 11:40:31 +08:00   ❤️ 1
    前端设计师接了后端的活?
    我觉得 lz 还是找专人看吧,也不需要淘宝找,就在这里找吧,不是也有人加你了嘛。
    大家说的,图片的问题, lz 应该已经解决了吧?
    hoythan
        50
    hoythan  
    OP
       2016-03-08 11:41:16 +08:00
    @mahone3297 图片问题已经解决,现在已经排除到数据库问题了。感谢大家
    jarlyyn
        51
    jarlyyn  
       2016-03-08 11:44:11 +08:00   ❤️ 1
    另外给个建议。

    换 apache 环境。

    如果上面问题都解决的话,感觉有可能问题是处在 php-fpm 或者 nginx 上。

    4g ,这点访问量,跑 apache 问题不大
    mahone3297
        52
    mahone3297  
       2016-03-08 11:45:45 +08:00   ❤️ 1
    @hoythan 数据库刚才好像看到你说什么 30m ,你的数据库和应用是在同一台机器上的么?
    考虑配一个 rds ?虽然我不确定是数据库的问题,但这样,至少基本能排除数据库的问题。
    fenghua1013
        53
    fenghua1013  
       2016-03-08 12:03:01 +08:00   ❤️ 1
    你的服务器 cpu 负载太高了
    检查一下进程
    npc0der
        54
    npc0der  
       2016-03-08 12:07:34 +08:00   ❤️ 1
    把 php-cgi.sock 定到 /dev/shm/ 下面看看 另外 你可以在终端下 看下 是不是磁盘 io 过高导致的。
    hoythan
        55
    hoythan  
    OP
       2016-03-08 12:11:01 +08:00
    刚刚又崩溃了
    以下是服务器的 messages 日志
    Mar 8 12:11:19 iZ25hwakeqjZ sshd: /usr/sbin/sshd: error while loading shared libraries: cannot allocate symbol search list: Cannot allocate memory
    Mar 8 12:11:32 iZ25hwakeqjZ systemd-logind: Failed to save session data /run/systemd/sessions/312: No space left on device
    Mar 8 12:11:32 iZ25hwakeqjZ systemd-logind: Failed to save user data /run/systemd/users/0: No space left on device
    Mar 8 12:11:33 iZ25hwakeqjZ systemd-logind: Removed session 313.
    Mar 8 12:11:33 iZ25hwakeqjZ systemd-logind: Removed session 312.
    Mar 8 12:11:43 iZ25hwakeqjZ systemd-logind: Removed session 311.
    Mar 8 12:11:43 iZ25hwakeqjZ systemd-logind: Removed session 310.
    Mar 8 12:11:43 iZ25hwakeqjZ systemd-logind: Removed session 309.
    Mar 8 12:11:43 iZ25hwakeqjZ systemd-logind: New session 315 of user root.
    Mar 8 12:11:43 iZ25hwakeqjZ systemd-logind: New session 314 of user root.
    Mar 8 12:11:43 iZ25hwakeqjZ systemd: Started Session 314 of user root.
    Mar 8 12:11:43 iZ25hwakeqjZ systemd: Starting Session 314 of user root.
    Mar 8 12:11:43 iZ25hwakeqjZ systemd: Started Session 315 of user root.
    Mar 8 12:11:43 iZ25hwakeqjZ systemd: Starting Session 315 of user root.
    realpg
        56
    realpg  
       2016-03-08 12:15:18 +08:00   ❤️ 1
    让你老板给个红包,给你完完整整配好环境,优化访问,加固系统,如何……
    一点运维经验没有就揽运维的活干吗……
    yeqiu
        57
    yeqiu  
       2016-03-08 12:21:09 +08:00   ❤️ 1
    LZ 加油吧,祝你好运
    Deeer
        58
    Deeer  
       2016-03-08 12:25:26 +08:00   ❤️ 1
    第二天又看到你了。虽然不大懂, But good luck :]
    lgh
        59
    lgh  
       2016-03-08 12:31:42 +08:00   ❤️ 1
    Cannot allocate memory 内存耗尽了吧
    ztrt
        60
    ztrt  
       2016-03-08 12:32:31 +08:00   ❤️ 1
    pm.max_spare_servers = 30
    为什么只开 30 个?
    在你卡的时候用 top 命令查看负载及进程使用情况,还有使用 vmstat 1 100 或者开启慢 查询等等都能看出些端倪,不会搜索只会伸手不骂你才怪
    chaegumi
        61
    chaegumi  
       2016-03-08 12:34:10 +08:00   ❤️ 1
    php 的日志没有
    chaegumi
        62
    chaegumi  
       2016-03-08 12:34:56 +08:00   ❤️ 1
    nginx 的日志感觉 php 都没起来,或者起来就死的那种
    realpg
        63
    realpg  
       2016-03-08 12:44:40 +08:00   ❤️ 1
    我已经大概看明白了问题在哪了……
    目测需要实测验证……
    ztrt
        64
    ztrt  
       2016-03-08 12:46:31 +08:00   ❤️ 1
    根据日志报错随便百度下就有资料参考 http://bbs.vpser.net/thread-9339-1-1.html
    huson
        65
    huson  
       2016-03-08 13:04:02 +08:00   ❤️ 1
    你这个问题 我以前遇到过,是 php-fpm 进程开的太多,内存耗尽了,你把 pm.max_children 改小,把 MYSQL 单独放到一台 ECS 或者增大机器内存
    huson
        66
    huson  
       2016-03-08 13:05:45 +08:00
    pm.max_requests 也记得要打开
    Wtoto
        67
    Wtoto  
       2016-03-08 13:06:15 +08:00   ❤️ 1
    看看
    jarlyyn
        68
    jarlyyn  
       2016-03-08 13:30:38 +08:00   ❤️ 1
    Mar 8 12:11:19 iZ25hwakeqjZ sshd: /usr/sbin/sshd: error while loading shared libraries: cannot allocate symbol search list: Cannot allocate memory
    Mar 8 12:11:32 iZ25hwakeqjZ systemd-logind: Failed to save session data /run/systemd/sessions/312: No space left on device


    内存和磁盘不足?
    ztrt
        69
    ztrt  
       2016-03-08 13:40:02 +08:00 via Android   ❤️ 1
    @huson 首先他探针显示内存是够的,其次没记错的话 pm.max_children 这个选项只有在 pm = static 时才有效
    sampeng
        70
    sampeng  
       2016-03-08 13:58:41 +08:00   ❤️ 1
    @hoythan 有时间担心,都来回切换好多次了。。
    想到一个可能就去做,不行就换。还没有解决不了的事的。。。
    hoythan
        71
    hoythan  
    OP
       2016-03-08 14:01:56 +08:00
    @sampeng
    @ztrt
    @jarlyyn
    @huson
    @huson
    @realpg
    我现在认为是数据库问题了,因为我另外一台服务器装好比较低版本的 lnmp 环境后,连数据库都导入不成功 一直 502 ,就算 out 时间调整到 200 还是一样,数据库有一个是 post 数据 14mb 和 postmeta 数据 13mb 。
    mengzhuo
        72
    mengzhuo  
       2016-03-08 14:06:35 +08:00   ❤️ 1
    4Mb 小水管……
    4000/8 = 出口才 500KB/s 你这样真的好么……
    sampeng
        73
    sampeng  
       2016-03-08 14:08:13 +08:00   ❤️ 1
    @hoythan 甭怀疑了。去做。 200 还是一样。直接 10000 行不行?让错误暴露出来,给 mysql 加上慢日志时间,找个地方看 mysql 慢日志。。。
    post 数据 14mb 是什么鬼。。一条记录这么大?把这条备份,删掉。现象是否依旧。
    然后自己分析,自己解决。。有时间来发帖,试了无数方案了。。
    lansexinyu
        74
    lansexinyu  
       2016-03-08 14:14:45 +08:00   ❤️ 1
    我猜测问题估计在 nginx 配置上面,检查下 nginx 配置!
    homu
        75
    homu  
       2016-03-08 14:19:35 +08:00   ❤️ 1
    运维的烦恼?
    推荐使用系统监控神器 [Cloud Insight]( http://www.oneapm.com/ci/feature.html) ,及时发现性能问题,轻松运维。
    http://wt.sinaimg.cn/thumbnail/006mveLPgw1f1pfmx4m2rj316p0rf7c7.jpg?tags=%5B%7B%22x%22%3A%220.42%22%2C%22y%22%3A%220.17%22%2C%22str%22%3A%22Cloud+Insight+%5Cu7cfb%5Cu7edf%5Cu76d1%5Cu63a7%22%7D%5D
    还有报警功能哦~
    (对我就是来打广告的,希望能帮到你,哈哈~)
    homu
        76
    homu  
       2016-03-08 14:20:14 +08:00   ❤️ 1
    cocalrush
        77
    cocalrush  
       2016-03-08 15:00:13 +08:00   ❤️ 1
    mark 回去有空看看 估计是数据库 io 或者系统 io 没设置对...
    ck1llc
        78
    ck1llc  
       2016-03-08 15:12:29 +08:00   ❤️ 1
    问题解决了么?等着学习呢
    ztrt
        79
    ztrt  
       2016-03-08 15:18:19 +08:00   ❤️ 1
    @hoythan 用 MySQLdump , 导入时 lnmp 都停了没有?
    huson
        80
    huson  
       2016-03-08 17:04:04 +08:00   ❤️ 1
    @ztrt - -看错了 我之前遇到的情况是 static 情况下 开的太多 资源耗尽
    asddsa
        81
    asddsa  
       2016-03-08 17:06:39 +08:00   ❤️ 1
    还是昨天那句话,你重新一步一步架个 LNMP ,这情况真的会好转的。。。
    imlewc
        82
    imlewc  
       2016-03-08 18:26:19 +08:00   ❤️ 1
    先开 php-slow log 看看是什么地方的问题 log 有时候很重要
    ZGLHHH
        83
    ZGLHHH  
       2016-03-08 18:45:01 +08:00   ❤️ 1
    1.图片、 js 、 css 等静态资源用 cdn 分发( upyun 、 qiniu 均可)
    2.套个 CDN
    3.阿里云的话建议用云磁盘,本地磁盘的 I/O 低的可怜
    4.阿里云的均衡负载
    5.站库分离,数据库用云数据库
    6.个人不推荐阿里云,建议买国外的机器,便宜又稳定,还是大水管。 [推荐 DO 、 Linode 、 Vultr
    ten789
        84
    ten789  
       2016-03-08 19:27:42 +08:00   ❤️ 1
    两天了还没被老班砍死么 2000 块钱啥都干的破事
    fy
        85
    fy  
       2016-03-08 19:42:32 +08:00   ❤️ 1
    楼主你这还没解决?昨天就看到说你图太大,但是加个 CDN 就完事了啊?
    填一下域名,改动一下解析,也就 5 分钟的事情
    zencoding
        86
    zencoding  
       2016-03-08 20:14:18 +08:00   ❤️ 1
    一、检查磁盘使用
    二、监控故障期 I/O
    阿里云的磁盘 I/O 很有趣,是跟着你的实例配置走的
    hoythan
        87
    hoythan  
    OP
       2016-03-08 20:37:30 +08:00
    完结此贴,感谢大家的支持,初步的诊断是 sql 语句导致的问题。但是具体的还没有排查出来,今天已经更换了新的 lnmp 环境,并安装了监控探针,希望明天可以出结果,如果没有问题,那么我就从工资里拿出一两百块发支付宝红包感谢各位,如果还是有问题,呵呵...大家后天在网易新闻社会板块找找我好了。
    debuge
        88
    debuge  
       2016-03-08 21:25:43 +08:00   ❤️ 1
    把问题和尽可能多的信息放上来,或者搭建一个非正式运行的环境将问题重现,请大家一起讨论。
    另外,轻松一点, 这只是你职业生涯可能遇到的无数问题中的一小个而已,不要想的太严重
    mengzhuo
        89
    mengzhuo  
       2016-03-08 21:40:59 +08:00 via iPhone   ❤️ 1
    你刚入职吧……这种事老板不会杀了你的,最多炒了你换个人罢了。

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

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

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

    开头时候服务器环境的不熟悉浪费大量时间。。
    找配置文件,塞个 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
        99
    h4lt  
       2016-03-09 10:12:40 +08:00   ❤️ 1
    楼上厉害啊。
    学习下测试流程。
    mengzhuo
        100
    mengzhuo  
       2016-03-09 10:19:33 +08:00   ❤️ 1
    @mhycy
    wordpress 自身就有优化语句和索引了
    难道楼主是自己写 SQL 的么……难为他和你了
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1914 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 16:35 · PVG 00:35 · LAX 08:35 · JFK 11:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.