Blog

  • strace分析apache php进程执行

    看了外国人制作的排查apache网页很慢的视频顿时学习到了很多,应该多看国外的视频,链接http://www.youtube.com/watch?v=eF-p–AH37E

    这个例子介绍了有一个网页打开比其他网页要慢,telnet去测试GET请求,我这里用nginx做测试

    ➜   telnet jpuyy.com 80
    Trying 114.215.158.48...
    Connected to jpuyy.com.
    Escape character is '^]'.
    GET / HTTP/1.1
    Host: jpuyy.com
    

    这时回车一次,这样与服务器keep-alive。
    另打开一个窗口,,用pidof nginx找到此进程的pid,用lsof -p查看此pid都打开了哪些文件,同时也能看到tcp ESTABLISHED及打开的端口,这里就能确定是哪个nginx进程来处理用户请求。

    for i in `pidof nginx`; do lsof -n -p $i|grep ESTABLISHED; done
    nginx   28170 nginx   14u  IPv4            8920667      0t0     TCP 114.215.158.48:http->91.200.12.90:61110 (ESTABLISHED)
    

    在服务器上结合top,按下shift+u,输入nginx过滤只有nginx用户的进程。

    找到pid之后,用strace -p pid分析请求到底都做了什么。这里是要找网页变慢的因素,加上-r参数显示时间过程,用于查看是哪一步变慢的,-o 跟filename将输出重定向到文件中,以下是完整命令。

    strace -o file -r -p 28170

    接下来打开可以查看worker是如何工作的,打开文件,运行命令,调用系统文件,调用php。因为加了-r参数,可以看到每一步运行的时间。可以直接用awk或cut结合sort找出运行时间最长的一步,查看它是因为dns原因,还是php运行函数导致。

  • ThinkPad X200 Windows7 花屏处理

    经不起ie9的诱惑 把自己本本从xp升级成了win7 旗舰版 发现花屏 分析应该是本本内存 2G+1G 导致的 于是  开机按住F1进BIOS程序, 找到CPU设置项, 设置Intel VT-d 为 DISABLED,保存,关机

  • 字符串反向显示

    shell命令rev

    echo 'abc' | rev

    rev filename

    按行反向显示

    cat filename | tac
    
  • linux的dns缓存服务-nscd

    nscd缓存三种服务passwd group hosts,所以它会记录三个库,分别对应源/etc/passwd, /etc/hosts 和 /etc/resolv.conf每个库保存两份缓存,一份是找到记录的,一份是没有找到记录的。每一种缓存都保存有生存时间(TTL).

    开启 、停止、 重启服务

     sevices nscd start | stop | restart

    缓存DB文件在/var/db/nscd下

    查看统计信息

    nscd -g

    清除缓存

    nscd -i passwd
    nscd -i group
    nscd -i hosts

    使用 reload 会实现上面的功能

        force-reload | reload)
            echo -n $"Reloading $prog: "
            RETVAL=0
            /usr/sbin/nscd -i passwd || RETVAL=$?
            /usr/sbin/nscd -i group || RETVAL=$?
            /usr/sbin/nscd -i hosts || RETVAL=$?
            /usr/sbin/nscd -i services || RETVAL=$?
            echo
        ;;
    
  • ubuntu支持exfat

    apt-get install exfat-utils

  • 软件测试一般分为四个步骤:

    软件测试一般分为四个步骤:(1)单元测试(也称模块测试):针对软件设计的基本单元——程序模块,进行正确性检验的测试工作。目的在于发现各个模块内部可能存在的各种差错。单元测试需要从程序内部结构出发设计测试用例,多个模块可以平行、独立地进行测试;(2)集成测试(也称组装测试,联合测试):在单元测试的基础上,将所有模块按设计要求集成在一起进行测试,以检验总体设计中各模块间的接口设计问题、模块之间的相互影响、上层模块存在的各种差错及全局数据结构对系统的影响等方面。(3)确认测试(也称验收测试,有效性测试):主要检验软件的功能和性能是否与需求说明书中的规定一致。(4)系统测试:将软件系统作为一个元素,放入整个实际的计算机系统中,与计算机硬件、其他软件、使用人员等系统元素结合在一起,在实际使用环境下进行综合全面的测试。