前不久碰上mysql的表损坏,百度到这篇文章,现在转载过来,原文出处:http://logzgh.itpub.net/post/3185/454455 继续阅读……
27 Oct 2010 Posted in database
前不久碰上mysql的表损坏,百度到这篇文章,现在转载过来,原文出处:http://logzgh.itpub.net/post/3185/454455 继续阅读……
20 Oct 2010 Posted in linux
在对TCP参数进行sysctl优化时,通常会减小net.ipv4.tcp_max_tw_buckets这个设置,以减少服务器的TIME_WAIT数量,提高服务器响应速度。 继续阅读……
19 Oct 2010 Posted in monitor
nagios自带有性能监控工具nagiostats,安装在nagios路径的bin/下。直接运行即可看到主机、服务的检测频率,故障数量及比例等。举例如下: 继续阅读……
09 Oct 2010 Posted in linux
linux上的时间,一般用定时ntpdate或者守护ntpd服务来保持正确。不过有时候会发现系统时间显示不是我们熟悉的CST,而是莫名其妙的其他地方。比如EDT什么的,ntpdate的时候,可不会自己辨别时区的~~ 那么就要自己手动更改了。 办法很多,第一: /usr/bin/tzselect命令,然后采用一问一答的方式完成配置,这个命令其实就是一个shell脚本,利用select和case命令完成交互,从/usr/share/zoneinfo/中获取指定的文件完成操作。 第二: 既然知道了tzselect的操作过程,也就可以自己来干这件事情:直接进入/usr/share/zoneinfo目录,找到需要的文件,比如cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime即可; 第三: 各linux发行版都会有一些自己定制的配置工具,最有名的比如红帽的setup~ 对于时区设置,也有这种工具,redhat系列有timeconfig,debian系列有dpkg-reconfigure tzdata。 继续阅读……
26 Sep 2010 Posted in perl
看mogileFS,其中用到了perlbal,这是一个用perl完成的超轻量级服务器程序。包括了web、proxy、loadbalance等功能,嗯,看起来和nginx很像。 又想到曾经在CU上看到一个说法,用解释性脚本语言编写的服务器程序执行相应的网页,效率最高。 我就会凑点perl,下perlbal来体验一把吧~~ 继续阅读……
26 Sep 2010 Posted in squid
一共关系到cache_peer/always_direct/never_direct/hierarchy_stoplist/prefer_direct等配置项。 继续阅读……
25 Aug 2010 Posted in bash
之前在linux上有个脚本,通过expr命令截取字符串的。大意如下:
a=/path/to/example
b=expr length "$a "
c=/path/to/example/file/to/example
d=expr length "$c"
e=expr substr "$c" "$b" "$d"
转移到BSD后,脚本报错:expr: syntax error
分别在linux和bsd上man expr后对比了一下,发现bsd上的expr确实没有index、length、substr等运算,原来linux上的expr是GNU的;而bsd上的expr是POSIX的,没有gnu的那些扩展用法……
于是必须使用些通用的办法来完成这个截取功能。方法很多,举例如下:
继续阅读……
24 Aug 2010 Posted in
在做CDN的时候,曾经有一个客户加速视频播放,所以去注册下载了JWPlayer尝尝鲜。 转眼几个月了,今天突然收到一封信,《Introducing Open Video Ads》,原来是JWPlayer的开发者,新出的基于GPL3的一个开源插件,可以在jwplayer和flowplayer播放正式视频前,插播一段自定义广告~~ 记得离职前还有同事专门在研究如何在播放rtmp流时切换插播广告,不知道现在搞定没。 不过,这还是我第一次收到开源软件开发者推广自己软件的邮件。。。 继续阅读……
24 Aug 2010 Posted in linux
继pgrep之后,又发现一个pmap命令,有些不错的小作用~ 比方说,用pgrep java得出pid后,用pmap $pid,得出输出结果如下: 继续阅读……
24 Aug 2010 Posted in linux
linux内核从2.6.13开始,加入了inotify特性。对目录、文件的各种修改,都会发出inotify信号。包括 IN_ACCESS IN_MODIFY IN_ATTRIB IN_CLOSE_WRITE IN_CLOSE_NOWRITE IN_OPEN IN_MOVED_FROM IN_MOVED_TO IN_CREATE IN_DELETE IN_DELETE_SELF IN_MOVE_SELF IN_UNMOUNT IN_CLOSE IN_MOVE 目前最常见的inotify应用,就是和rsync配合进行实时同步。 而对web发布路径进行inotify监听的话,可以实时PURGE掉前端cache,保证网民访问的实效性。内容更新周期不固定的一些网站,大可以设定长一些的expires(也不要太长,不然浏览器端本身的缓存影响比较大),然后通过inotify监听来强制控制缓存时间,应该是比较有效果的。 最早的思路,先用perl的Linux::Inotify模块watch目录,read出每次event的name;再用IO::Socket模块向squid发送”PURGE $url HTTP/1.0\n\n”请求,最后用WWW::Curl::Form模块POST数据到CDN的刷新接口。洋洋洒洒好几十行后,发现利用inotify-tools、curl、squidclient等现成的工具,写成的shell脚本更加简单而且方便。 先修改squid.conf,添加web服务器ip的purge权限,重读配置; 在web服务器上,从sourceforge下载inotify-tools源码编译:wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz && tar zxf inotify-tools-3.14.tar.gz && cd inotify-tools-3.14 && ./configure –prefix=/usr && make && make install 从squid上scp /usr/local/squid/bin/squidclient 到web服务器上; 要是没有curl的话,yum install一个。 最后创建inotify-purge.sh脚本如下: 继续阅读……
13 Aug 2010 Posted in monitor
nagios默认command中,有个未开启的process_performance_data。可以开启它来保存数据,然后提供给rrdtools绘图。 继续阅读……
13 Aug 2010 Posted in monitor
之前提高日志流量统计的问题。并给出了分时流量的计算方法。当是想的是用perl调用rrd或者gd画图,甚至有把日志统计也写成perl的打算。 不过今天发现了一个小工具gnuplot,画图功能相当强大(在找资料的时候看到台湾有人用这个画台湾的三维地形图!),上手相当简单,尤其适合日志统计分析,相比来说,rrd还是比较适合实时监控画图的情况。 比如当初的脚本输出如下: [root@Zabbix cache]# tail test.log 23:14 506.877 23:19 501.068 23:24 493.254 23:29 469.184 23:34 460.161 23:39 426.065 23:44 429.734 23:49 409.255 23:54 423.512 23:59 390.676 然后编写gnuplot的配置文件如下: 继续阅读……
13 Aug 2010 Posted in bash
在写check_if_flow.sh的时候,因为要比较的值太多,几个网卡,每个都分进出、然后分w和c。如果直接if判断大小,会写的无比庞大……于是想到根据比较结果先输出一个变量,大就是1,小就是0,类似这种。 继续阅读……
05 Aug 2010 Posted in monitor
流量监控,一般看cacti上的绘图。近日打算设置报警,懒得给cacti加模块,自己写个脚本吧,于是开始研究这个流量监控的方式。 先是在网上看到一个nagios的check_traffic.sh脚本,核心就是用snmpwalk取网卡总流量,写在/tmp/某个文件下,下次nrpe启动check时,再去新的总流量,减去文件中读取出来的值,除以启动间隔时间,就是平均流量值。 用snmpwalk -v 2c -c public localhost IF-MIB::ifInOctets取出值来一看,发现和ifconifg出来的RX数值是一样的! 然后有张宴的net.sh脚本,从/proc/net/dev中取值,然后存进变量后,sleep一定时间,再取一次,同样相减再做除法,得出平均流量值。 再cat /proc/net/dev和ifconfig的一比较,数值也是一样的,把两个脚本设定相同间隔,同时运行,显示的结果都是一样的! 那从本机监控的角度来说,那当然是从proc中取值计算容易了。毕竟给一大把机器装snmpwalk很费的…… (因为近期cacti上的图时不时有某些机器突发满载流量尖峰,持续时间又很短,所以靠cacti或者nagios本身这种间隔性轮询扫描很可能就错过去了) 最终想法是,在机器上后台长期运行监控脚本,碰到流量突发,发送到监控服务器,监控服务器上开启sniffer或者wireshark抓包,同时发邮件报警。 目前初步完成监控客户端脚本如下: 继续阅读……
04 Aug 2010 Posted in CDN
今天逛到淘宝核心系统组的公开博客,然后知道了淘宝开源平台http://code.taobao.org/,刚出来的东东,上面开源了淘宝目前正在使用的key-value分布式存储tair和nginx的concet模块、Cookie模块,以及这个平台本身的代码……在回复中,淘宝的人说有关tair的update都会同步在这个平台上进行,而不是另起一个闭源分支,或者想新浪的sina-sdd那样放弃。据说九月份,淘宝还会放出它的分布式文件系统TFS来,毕竟时间不长,会不会“人亡政息”,有待考验…… 继续阅读……
03 Aug 2010 Posted in CDN
话接上篇。 在发现经过squid的刷新请求头不带If-None-Match后,向squid-user发邮件询问。Amos回复如下: 继续阅读……
01 Aug 2010 Posted in CDN
手上有一个伪静态的论坛bbs.example.com,每当有用户回复帖子的时候,提交到r.bbs.example.com,然后由r.bbs.example.com的提示页面replyautojump.jsp延迟3000后调用window.location.href函数返回原来的帖子——期间即完成对该帖的静态化。 继续阅读……
28 Jul 2010 Posted in monitor
nagios自带的check_antp太过简约,除了状态统计输出外,什么参数都不提供。在面对不同应用服务器时,报警就成了很大问题。于是决定自己写一个check脚本。作脚本运行,与命令操作时一个不同,就是要考虑一下效率问题。在高并发的机器上定期运行netstat -ant命令去统计,显然不太合适,可以直接从proc系统中取数据,这就快多了。 继续阅读……