Archive

Archive for the ‘工具介绍’ Category

调查服务器响应时间的利器 tcprstat

December 6th, 2010 9 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: 调查服务器响应时间的利器 tcprstat

我们在做服务器程序的时候,经常要知道一个请求的响应时间,借以优化或者定位问题。 通常的做法是在代码里面加入日志计算时间,这个方法有问题,时间不准确。因为数据从网卡到应用程序,从应用到网卡的时间没有被计算在内。 而且这个时间随着系统的负载有很大的变化。
那同学说,我wireshark, tcpdump抓包人肉统计不行吗。 可以的,只不过我会很同情你,此举需要耐心且不具可持续性。 所以我们希望有个工具能够最少费力的做这个事情。

这时候来自percona的tcprstat来救助了! 这个工具原本开发用来调查mysqld的性能问题,所以不要奇怪它的默认端口是3306, 但是我们可以用这个工具来调查典型的request->response类型的服务器。

什么是tcprstat:
Read more…

Post Footer automatically generated by wp-posturl plugin for wordpress.

git 看图不说路

November 30th, 2010 2 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: git 看图不说路

来源: http://panela.blog-city.com/git_supervisual_cheatsheet.htm

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: 工具介绍 Tags:

Linux下pstack的实现

November 28th, 2010 11 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Linux下pstack的实现

Linux下有时候我们需要知道一个进程在做什么,比如说程序不正常的时候,他到底在干吗?最直接的方法就是打印出他所有线程的调用栈,这样我们从栈再配合程序代码就知道程序在干吗了。
Linux下这个工具叫做pstack. 使用方法是

# pstack
Usage: pstack <process-id>

当然这个被调查的程序需要有符号信息。 比较雷人的是 这个程序竟然是个shell脚本,核心实现是gdb的 thread apply all bt, 我们可以观摩下他的实现,这个我们做类似的程序提供了一个很好的思路:
Read more…

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Linux, 工具介绍, 源码分析 Tags: ,

Tsung用于压测MySQL服务器的脚本

November 18th, 2010 16 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Tsung用于压测MySQL服务器的脚本

这个MySQL服务器压测的需求是 :

环境: Linux RHEL 5U4 X86-64, 24G内存, 16核.
MySQL服务器在xx.232.36.1上。

压力由最多32个客户端发起,每个客户端分别做update, insert, delete操作,概率分别是50%, 30%, 20%, 每种操作循环999999 × 100次,每100次操作后休息1-3秒。
这样的压力最多持续2个小时。

我们用的是著名的tsung压力测试工具, 之前我有篇blog介绍过, 见这里

以下是用到的脚本, 用到了比较先进的随机动态参数替换等技术,对于编写此类脚本有很大的借鉴意义。
Read more…

Post Footer automatically generated by wp-posturl plugin for wordpress.

SystemTap –Linux下的万能观测工具

November 18th, 2010 10 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: SystemTap –Linux下的万能观测工具

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Linux, 工具介绍 Tags: , ,

调查用户空间程序某函数最常调用路径

November 17th, 2010 12 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: 调查用户空间程序某函数最常调用路径

在做系统调优或者调查性能问题的的时候,比如说调查一个锁的性能问题。 这把锁的代码会有很多路径会调用, 我们可以在锁的地方设个probe点,但是我们无法知道那个路径是最经常调用的。 所以我就写了个stap脚本来解决这个问题,代码在RHEL 5.4/6下都调试没有问题的。

$ cat  > dig.stp 
global stacks_count

probe process(@1).function(@2)
{
 stacks_count[ubacktrace()]++;
}

function sprint_stackx(stack)
{
addr = tokenize(stack, " ");
while(addr != "")
{
        fun= symname(strtol(addr, 16));
        s = fun . "->" . s;
        addr = tokenize("", " ");
}
return s;
}

function print_top_stack () {
  printf ("%50s %10s\n", "STACK", "COUNT")
  foreach (stack in stacks_count- limit 20) {
    printf("%50s %10d\n", sprint_stackx(stack), stacks_count[stack])
  }
  delete stacks_count
}

probe timer.s(5) {
  print_top_stack ()
  printf("--------------------------------------------------------------\n")
}

CTRL+D

#我们用nmon这个程序来试验下吧
#脚本的使用方法是: stap dig.stp prog funcs
#注意这个程序需要-g编译, 才能有符号信息

#在另外一个控制台下运行nmon, 打开磁盘,CPU监控等。
$nmon

$ sudo stap dig.stp nmon proc_*
                                             STACK      COUNT
                                 main->proc_read->          2
                                  main->proc_cpu->          2
                                 main->proc_read->          2
                                  main->proc_mem->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
                 main->proc_mem->proc_mem_search->          2
--------------------------------------------------------------
...

哈效果不错哦!

祝玩的开心。

Post Footer automatically generated by wp-posturl plugin for wordpress.

Oprofile 系统层面的性能微调工具

November 15th, 2010 Comments off

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Oprofile 系统层面的性能微调工具

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Linux, 工具介绍 Tags: ,