• 记一次网站访问慢的调试记录


    客户网站打开非常慢,请我去看一下。

    首先慢是一个主观感受,到底多久算慢呢? 这里可以用浏览器开的开发工具来看加载时间,看了一下,index.php确实非常慢,足足有8s之多。而且这个8s是在waiting的。也就是说服务器等了8s才给浏览器发东西。 非常可疑,不正常!

    这里要交代一下这个网站的架构,采用的简单的linux,php ,nginx,mysql ,甚至还开了memcached ,阿里云云主机,照理说不应该这么慢啊。

    8s ,首先想到的是mysql ,排查,开slow log ,看有没有大于2s 的查询语句,发现没有。都挺块的。。这里排查数据库的原因。

    接下来我想到了nginx,把进程调成1work 进程 ,然后用strace -p PID -c 统计,没有特别好的发现。。

    如果,所以我把目光聚集在php 上,php-fpm看了一下,也有slow log 这个概念,把秒数设成2s ,再看slow log

    sleep() xxx/plugins/functions/cache_memcached.php:64

    php确实调用了memcached ,我再仔细看memcached ,之前搜索确实发现有些网站访问慢是不能连接memcached 的原因,把原进程杀了,然后-c 60000调大可连接的参数,怕是因为默认连接数1024不够的缘故。发现还是老样子,

    这时候telnet localhost 11211

    stats

    STAT pid 25853
    STAT uptime 22191
    STAT time 1370735255
    STAT version 1.2.0
    STAT pointer_size 64
    STAT rusage_user 0.005999
    STAT rusage_system 0.014997
    STAT curr_items 0
    STAT total_items 0
    STAT bytes 0
    STAT curr_connections 2
    STAT total_connections 3
    STAT connection_structures 3
    STAT cmd_get 0
    STAT cmd_set 0
    STAT get_hits 0
    STAT get_misses 0
    STAT bytes_read 7
    STAT bytes_written 0
    STAT limit_maxbytes 67108864
    发现了问题所在,cmd_get 为0 ,也就是 没有连上memcached,那么这个时间完全就在等待了,那么肯定会慢啊

    如果正如我分析的,把网站关于memcached 的部分给注释了,不用,看访问结果,结果超快,不过1s就ok了。

    再看strace 结果

    strace  -i -p 24100 -c
    Process 24100 attached - interrupt to quit
    Process 24100 detached
    % time     seconds  usecs/call     calls    errors syscall
    ------ ----------- ----------- --------- --------- ----------------
    100.00    0.000033           1        25           sendfile
      0.00    0.000000           0        12           write
      0.00    0.000000           0        10           open
      0.00    0.000000           0        24           close
      0.00    0.000000           0        29         1 stat
      0.00    0.000000           0        10           fstat
      0.00    0.000000           0        14           ioctl
      0.00    0.000000           0         2           readv
      0.00    0.000000           0        14           writev
      0.00    0.000000           0         2           socket
      0.00    0.000000           0         2         2 connect
      0.00    0.000000           0        12           accept
      0.00    0.000000           0        40        14 recvfrom
      0.00    0.000000           0         2           shutdown
      0.00    0.000000           0         2           getsockname
      0.00    0.000000           0        20           setsockopt
      0.00    0.000000           0         2           getsockopt
      0.00    0.000000           0        55           epoll_wait
      0.00    0.000000           0        21           epoll_ctl
    ------ ----------- ----------- --------- --------- ----------------
    100.00    0.000033                   298        17 total

    正常的应该是100%时间用在森的sendfile 上面了。但为什么系统没有连接memcached ,原因不明。

  • 相关阅读:
    Linux_Rsync远程同步备份服务器
    Linux_Rsync远程同步备份服务器
    Linux_VMWare12 Install RHEL7
    Linux_VMWare12 Install RHEL7
    Linux_SquidProxyServer代理服务器
    Linux_SquidProxyServer代理服务器
    Linux_LAMP 最强大的动态网站解决方案
    Ozone Native ACL的应用
    Ozone Audit Log解析工具的应用
    Ozone数据探查服务Recon2.0设计
  • 原文地址:https://www.cnblogs.com/gqdw/p/3127950.html
Copyright © 2020-2023  润新知