testing-04

Linux

  • 编译tcprstat

    ·

    在RHEL6.1(Red Hat Enterprise Linux Server)上静态编译并不容易。tcprstat编译也有这个问题。

    源码下载:tcprstat@Launchpad 命令:bzr branch lp:tcprstat

    编译命令:./bootstrap && ./configure && make

    如果顺利的话,就结束了。不过在我的发行版会报如下错误: (more…)

  • TCP/IP重传超时–RTO

    ·

    概述:本文讨论主机在发送一个TCP数据包后,如果迟迟没有收到ACK,主机多久后会重传这个数据包。主机从发出数据包到第一次TCP重传开始,RFC中这段时间间隔称为retransmission timeout,缩写做RTO。本文会先看看RFC中如何定义RTO,然后看看Linux中如何实现。本文旨在分享:当遇到了TCP层问题改如何去查找、阅读文档,该如何去在Linux源码中寻求答案。

    1. 起源

    在分析MySQL Semi-sync故障时,我们用Tcpdump+Wireshark(感谢淘宝雕梁)抓住当时的网络包传送细节,观察到了一次TCP重传最终导致了Semi-sync超时:

    第一次传输 13:55:11.893291 master => slave Binlog pos:319890197 重传: 13:55:12.094596 master => slave Binlog pos:319890197

    看到两次传送间隔约201毫秒,即第一次传输201毫秒后,还没有收到ACK响应,TCP认为传输超时,开始重传。

    疑问:host和host之间的RTT大约是0.5毫秒,为什么第一次重传需要等200毫秒?(我希望是<20ms)socket程序可以配置吗RTO吗?TCP有参数可配置RTO吗?

    2. Google/书籍/RFC

    翻开TCP/IP详解找到关于TCP Retransmission章节,较详细的介绍TCP的超时机制,书中是个概述,于是又找到RFC1122。

    RFC1122的4.2.2.15和4.2.3.1都介绍了Retransmission Timeout的处理(说来惭愧,这是第一次阅读TCP相关RFC)。

    RFC中搜索Retransmission发现RFC 793 1122 2988 6298都有对重传算法、和初次重传超时的描述。于是开始阅读这个四个RFC,耗时约2小时,了解了大致的重传超时算法。 (more…)

  • Linux Top命令学习

    ·

    也忘了第一次用Top观察Linux运行状态是什么时候了,不过最近吧Top的文档收获不少。

    1. 有用的命令top-z-x
    z    :打开/关闭彩色显示
    x    :高亮显示排序列
    

    在使用top命令后,“先按z键,再按x键”,这时屏幕会彩色显示输出,白色显示的列是当前排序的列;偶尔还会有一些白色显示行,这些行是当前正在运行进程。使用该参数可以帮助我们更清楚的看到排序列。例如,我想按照cpu使用排序来查看进程:

    top-z-x

    使用了top-z-x命令后是不是看得清晰了一些:)

    2. 有用的命令top-1
    1    :SMP的系统,会单独显示各个CPU的运行状态
    

    top-1

    3. 选择排序列top-z-x-<
    <    :改变排序列
    >    :改变排序列
    

    top-z-x-< 试试就知道是什么意思了:) 。例如,默认是按照cpu使用率排序的,现在我想看看安装使用的虚拟内存排序看看,使用命令top-z-x-<-<-<-<-< :

    top-z-x-lt

    4. 其他技巧
    W    :把当前配置文件到home目录下.toprc配置文件中
    F or O :支持更强的选择排序列的方式
    
    -b   :参数可以帮你在脚本中使用top命令
    -n   :配合-b使用,表示重新刷新一定次数后退出
    -d   :刷新延时时间。例如-d 5 表示top每隔5秒刷新一次。(默认是3秒)
    

    就这些吧,更多请查看top-h或者RTFM

    最后,各位看官,工作之余别忘了多多运动,没什么比健康更重要了:)

  • Flashcace安装 How-to

    ·

    Flashcache的安装在其READMEREADME-CentOS5.4已经有一个很详细的说明了,但是实际操作并不是很顺利,而且有些同事表示在编译过程中仍遇到了一些问题,这里详细的记录一下自己的编译、安装过程。

    1. 环境说明

    使用的是RHEL5.4的系统:

    $cat /etc/issue
    Red Hat Enterprise Linux Server release 5.4 (Tikanga)
    $uname -a
    Linux myhost 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

    (more…)

  • Flachcache初探

    ·

    Flashcache是Facebook技术团队的又一力作,最初是为加速MySQL设计的。Flashcache是在Linux层面的,所以任何受磁盘IO困绕的软件或应用都可以方便的使用之。

    1. Why Flashcache

    随着时间的流逝,网站上的数据一直在不停的积累。如果你经营的只是一个博客的话,这不会是问题,因为10G的空间,大概就够你写一辈子了(如果放在硬盘上,其实一辈子很短)。如果你恰巧在一个快速增长的公司,数据会越来越多,从MB,到GB,再到TB。

    如果将这些数据全部放在大容量的SATA、SAS盘上时,会发现性能(响应时间)不够;如果全放在SSD上时,又会发现成本很高。即使公司能够大气到都放到SSD上,你会发现1TB的数据里面可能只有200G是经常被访问的,300G可能偶尔被访问到,最后剩下的500G可能已经成为历史数据了,几乎不被访问到,如果全部都放在SSD上有略有浪费。于是就有了Flashcache

    Flashcache一个非常不错的软件(准确的说是一个Linux的模块),可以动态加载。Flashcache通过在文件系统(VFS)和设备驱动之间新增了一次缓存层,来实现对热门的缓存。Flashcache是另一种缓存,一般用SSD作为介质的缓存(一般的缓存用的是内存),通过将传统硬盘上的热门数据缓存到SSD上,然后利用SSD优秀的读性能,来加速系统。这个方法较之内存缓存,没有内存快,但是空间可以比内存大很多。

    本文是一个关于Flashcache的初步介绍。 (more…)

  • Linux下使用od查看文件

    ·

            "不积跬步,无以至千里"
                                     《劝学》
    

    查看文本文件使用vim/less就足够了,但如果想要查看一些其他二进制文件(例如DB的数据文件、程序的二进制代码)则借助于od/hexdump这些工具会很方便,这里会通过一些实例来详细介绍od命令的相关参数。

    1. od参数详解
    $od -j 49152 -N 38 -w4 -A d -t x1 -v tmp_test.ibd 0049152 fd 6f fb 70 0049156 00 00 00 03 0049160 ff ff ff ff 0049164 ff ff ff ff 0049168 00 00 00 03 0049172 ba 92 ac 0c 0049176 45 bf 00 00 0049180 00 00 00 00 0049184 00 00 00 00

    (more…)