《SUSE Linux Enterprise Desktop System Analysis and Tuning Guide》读书笔记

05 Apr 2011 Posted in  linux

这是一本比上篇提到的老书新很多、厚很多的调优指南。虽然至今没用过suse,但同是linux内核,与redhat差距不算太大。目前只打印并看到了systemtap章节,感觉很多内容说的比上本书细致的多,继续做笔记~ 1 General Notes on System Tuning 1.2 Rule Out Common Problems 检查/var/log/warn和/var/log/messages中的异常条目; 用top或ps命令检查是否有进程吃了太多CPU和内存; 通过/proc/net/dev检查网络问题; 用smartmontools检查硬盘IO问题; 确认后台进程都是在系统负载较低的时候运行的,可以通过nice命令调整其优先级; 一台服务器运行太多使用相同资源的服务的话,考虑拆分; 升级软件。 2 System Monitoring Utilities 2.1 Multi-Purpose Tools 2.1.1 vmstat 第一行输出显示的从最近一次重启以来的平均值 各列说明: r 运行队列中的进程数。这些进程等待cpu的空闲以便执行。如果该数值长期大于cpu核数,说明cpu不足; b 等待除了cpu以外的其他资源的进程数。通常是IO不足; swpd 已用swap空间,单位KB; free 未用内存空间,单位KB; inact 可以回收的未用内存空间,只有当使用-a参数时才显示——建议使用该参数; active 使用中且没有回收的内存空间,同样只在-a时显示; buff 内存中的文件缓冲空间;相反,-a时不显示; cache 内存中的页缓存空间;-a不显示; si 每秒从内存移动到swap的数据大小,单位KB; so 每秒从swap移动到内存的数据大小,单位KB,以上两个数长期偏大的话,机器需要加内存; bi 每秒从块设备中获取的块数量——注意swap也是块设备,包含在内! bo 每秒发送到块设备的块数量,同样包括swap; in 每秒中断数,数值越大说明IO级别越高; cs 每秒文本交换数,这个代表内核从内存中某进程中提取替换掉另一个进程的可执行代码——茫然?? us 用户空间的cpu使用率; sy 系统空间的cpu使用率; id cpu时间中的空闲比——就算它是0,也不一定就是什么坏事,还得看r和b两个数值来判断; wa 如果这个数不等于0,那说明系统吞吐在等待IO。这或许是不可避免的。比如如果一个文件是第一次被读取(即没有缓存),那同时的后台写必然挂起。这个数也是硬件瓶颈的一个指标(网络或者磁盘)。最后,还有可能是虚拟内存管理上的问题; st cpu用在虚拟管理上的比例。 2.1.2 System Activity Information: sar and sadc sadc其实就是在/etc/cron.d中添加的任务。原始数据写入/var/log/sa/saDD中,报告数据写入/var/logs/sar/sarDD中。默认配置,数据每10分钟一收集;报告每6小时一收集。详见/etc/sysstat/sysstat.cron;数据收集脚本是/usr/lib64/sa/sa1;数据报告脚本是/usr/lib64/sa/sa2;有必要的话可以自己用这两个脚本收集性能数据。 sar -f指定特定的数据文件出报告 sar -P指定某一个CPU出报告 sar -r显示内存信息:kbcommit和%commit显示了当前工作负载下可能需要的最大内存(含swap); sar -B显示内核页信息:majflt/s显示了每秒钟有多少页从硬盘(含swap)读入内存,这个数太大意味着系统很慢,而且内存不足;%vmeff显示了页扫描(pascand/s)及其相关的缓冲重用率(pgsteal/s),用以衡量页面回收的效率,数值接近100说明所有so的页都重用了,接近0说明没有被扫描的页,这都很好,但不要在0-30%之间。 sar -d显示块设备信息,最好加上-p显示设备名; sar -n显示网络信息,包括DEV/EDEV/NFS/NFSD/SOCK/ALL 2.2 System Information 2.2.1 iostat -n显示nfs; -x显示增强型信息; 2.2.3 pidstat -C “top”显示命令名中包括top字符串的目标。 2.2.5 lsof 无参数:打开的所有文件 -i:网络文件 2.2.6 udevadm 本工具只有root可以使用 2.3 Processes 2.3.2 ps 显示具体某进程:ps -p $(pidof ssh) 显示格式和排序:ps ax –format pid,rss,cmd –sort rss 显示单独进程:ps axo pid,$cpu,rss,vsz,args,wchan,etime 显示进程树:ps axfo pid,args 2.3.4 top 默认每2秒钟一刷新; 显示一次即退出:-n 1 shift+p——以CPU使用率排列(默认); shift+m——以常驻内存排列; shift+n——以进程号排列; shift+t——以时间排列; 2.4 Memory 2.4.1 free free -d 1.5——每1.5秒一刷新数据 2.4.3 smaps 在/proc/${pid}/smaps中看到的是进程当前的内存页数量,即除掉共享内存以外的真正进程使用的内存大小。 2.5 Networking 2.5.1 netstat -r路由;-i网卡;-M伪装链接;-g广播成员;-s信息 2.5.2 iptraf iptraf -i eth0 -t 1 -B -L iptraf.log eth0网卡一分钟内的信息,后台收集,记入iptraf.log中。 2.6 The /proc File System /proc/devices 可用设备 /proc/modules 已加载内核模块 /proc/cmdline 内核命令行 /proc/meminfo 内存使用详细信息 /proc/config.gz 内核当前运行配置的压缩文件 详细说明见/usr/src/linux/Documentation/filesystems/proc.txt 执行的进程和库文件以及他们在内存的地址信息见/proc/***/maps文件。 继续阅读……


《Tuning Red Hat Enterprise Linux on IBM server xSeries Servers》读书笔记

01 Apr 2011 Posted in  linux

一本很老的书,还是RHEL3时代的,在陪GF的空隙一点点读完,把笔记整理一下发在这里,只包括自己不知道或者说容易忘记的内容,不代表调优指南。 1 Tuning the operating system 1.1 Disabling daemons 关闭不必要的后台进程。RHEL3中,默认启动的后台进程有: apmd 高级电源管理 autofs 自动挂载 cups 通用UNIX打印机系统 hpoj 惠普打印机支持 isdn 调制解调器 netfs nfslock portmap NFS支持 pcmcia PCMCIA支持 rhnsd 自动升级 sendmail 邮件转发程序 xfs 桌面程序 1.2 Shutting down the GUI runlevel: 0 halt立刻关机immediately shut down 1 single单人 2 multi-user without NFS(这个说明和一般的说法不太一样~) 3 full multi-user 5 X11 6 reboot 修改/etc/inittab如下: id:3:initdefault: #runlevel #4:2345:respawn:/sbin/mingetty tty4 #关闭多余控制台 注意:留3个,以免在被攻击的时候自己反而进不去了! 1.4 Changing kernel parameters /proc/loadavg 系统负载1/5/15分钟 /proc/stat 内核状态:进程/swap/磁盘IO /proc/cpuinfo CPU信息 /proc/meminfoo 内存信息 /proc/sys/fs/* linux可用文件数及磁盘配额 /proc/sys/kernel/* 进程号范围/系统日志级别 /proc/sys/net/* 网络细节 /proc/sys/vm/* 内存缓冲管理 1.7 Tuning the processor subsystem CPU超线程注意事项: 注意使用SMP的kernel 实际CPU数越多,超线程意义越小: 2核:提升15-25% 4核:提升1-1% 8核:提升0-5% 1.8 Tuning the memory subsystem 如果决定调整/proc/sys/vm/*的参数,最好一次只调整一个。 vm.dbflush前3个参数分别为: nfract 在buffer被转存到disk前允许的最大buffer比率 ndirty 将buffer转到disk时一次允许操作最大的buffer数 nfract_sync 转存时允许buffer中dirty数据的最大比率 vm.kswapd tries_base 一次swap传输时的pages数。如果swapping较大,适当增加该值 tries_min kswapd运行时交换的pages的最小数 swap_cluster kswapd一次写入pages的数。太小会增加IO次数,太大又要等待请求队列 1.9 Tuning the file subsystem 磁盘访问速度是ms级别的,而内存是ns,PCI是us。 磁盘IO是最关键的问题服务器举例: 文件/打印服务器:所有数据从磁盘读取 数据库服务器:大量IO,在内存和磁盘间交换数据 磁盘IO不是最关键的问题服务器举例: 邮件服务器:网络状况才是最关键的。 web服务器:网络和内存才是最关键的….. 1.9.5 The swap partition 创建多个swap区有助于提升swap性能 通常情况,多个swap采用顺序读写,即只有/etc/fstab中排名在前的swap区耗尽的情况下,才会使用下一个swap区; 可以在fstab中定义优先级,类似”/dev/sda2 swap swap sw,pri=5 0 0”的格式; 相同优先级的swap区,系统会并发使用,不同优先级之间依然要等待耗尽!——另外,如果相同优先级的swap区有一个性能较差,会连带影响整个swap性能。 1.10 Tuning the network subsystem 网络问题经常会导致其他伴生问题。比如:块大小太小会给CPU利用率带来显著影响;TCP连接数过多会带来内存使用率的急速上升…… 经常被打开的net.ipv4.tcp_tw_reuse和net.ipv4.tcp_tw_recycle的作用:缓存TCP交互中的客户端信息,包括交互时间、最大段大小,阻塞窗口。详见RFC1644。 net.ipv4.tcp_fin_timeout可以缩短TCP建连时最后发送FIN序列的时间,以便快速释放内存提供给新进连接请求。但是修改这个的时候也要谨慎,因为由此导致的死套接字数量可能引起内存溢出! net.core.wmem_max/net.core.rmem_max定义在每个TCP套接字创建时划分的内存大小,推荐设置8MB。 net.ipv4.tcp_wmem/net.ipv4.tcp_rmem的最后一个数字不能大于上面core的定义。 net.ipv4.tcp_max_syn_backlog队列存放半连接。这些连接可能是因为客户端的连接异常,也可能仅仅是因为服务器负载太高导致。除了半连接,这个配置对防范拒绝服务攻击也有效。 net.ipv4.ipfrag_low_thresh/net.ipv4.ipfrag_high_thresh规范ip碎片,一旦触底,内核会开始丢包。这对于NFS和samba等文件服务器很重要,建议设置为256和384MB。 2 Tuning tools 2.3 top STAT:S=SLEEPING,R=RUNNING,T=TRACED/STOPPED,D=INTERRUPTIBLE SLEEP,Z=ZOMBIE 2.3.1 Process priority and nice levels 优先级从19(最低)到-19(最高),默认是0。启动进程时指定nice -n 19 command,启动后改变renice 19 command 2.4 iostat tps:transfers per second,多个单独的IO请求,可以组合在一次transfer请求中。 Blk_read/s,Blk_wrtn/s:每秒的读写块个数。block大小和transfer大小一样各不相同。一般是1、2、4KB,采用如下命令查看:dumpe2fs -h /dev/sda1 | grep -F ‘Block Size’ 2.5 vmstat Process:r:等待运行的进程数,b:不可中断睡眠中的进程数 Swap:单位是KBps CPU:us:非内核时间,包括user和nice,id:在linux2.5.41前,这个数值包括了IOwait时间在内…… 2.11 ulimit -H和-S分别是hard和soft,开机启动指定的话,修改/etc/security/limits.conf即可。 2.12 mpstat 用来在多CPU的机器上查看每个CPU的情况。 继续阅读……


php编译参数问题一例

31 Mar 2011 Posted in  php

某php应用在给图片加水印的时候,显示的中文全都成了乱码,而开发同事在它本机(ubuntu)上apt安装的lamp上显示没有问题。仔细检查过了从env到encoding到phpinfo,都没有发现问题——都符合GD函数imagettftext()的utf8要求。 还好有google,发现一个类似的文章,提出是php的编译参数中有一个–enable-gd-jis-conv,会把ttf字库中非标准拉丁文的部分,按照日文顺序映射,imagettftext()的默认编码其实被隐形指定成了日文编码euc-jp,中文自然就不正常了! 然后赶紧重新看phpinfo,真有这个参数。重新编译php,随后恢复正常显示了。 编译参数还真是不能大意啊~~ 继续阅读……


awk单行命令

28 Mar 2011 Posted in  bash

一眨眼又几天没更新,中午在Q群里聊到一个单行命令,随手记录下。 A需求:某文件如下 aaa bbb aaa aaa ccc aaa ddd …… 通过命令改成如下格式: 1 bbb 3 5 ccc 7 ddd …… 方法如下: bash echo -en 'aaa\nbbb\naaa\naaa\ndddd'|awk 'BEGIN{tag=1}{if(/aaa/){print tag;tag+=2}else{print}}' 或者更短一点: bash echo -en 'aaa\nbbb\naaa\naaa\ndddd'|awk 'BEGIN{tag=1}{if(/aaa/){$0=tag;tag+=2};print}' B需求: aaa不是文件一行的全部内容,而只是一部分。 方法如下: bash echo -en 'aaa\nbbb\naaa\nfdaaafdaaa\ndddd'|awk 'BEGIN{tag=1}{gsub(/aaa/,tag) && tag+=2;print}' 以上三种,凯的perl版本分别如下: perl perl -nale 'BEGIN{$tag = 1}if(/aaa/){print $tag;$tag+=2}else{print}' perl -nalpe 'BEGIN{$tag = 1};$_=$tag and $tag+=2 if /aaa/' perl -nalpe 'BEGIN{$tag = 1};$tag+=2 if s/aaa/$tag/' 继续阅读……


BSD上的流量监控脚本

21 Mar 2011 Posted in  monitor

之前有过一篇linux上的流量监控脚本的博文,是利用procfs进行数据运算。但BSD上的procfs和linux有所不同,它只包含了进程的信息,没有系统的统计。所以只能通过其他方法。 linux上另一种获取网卡总流量的方法是ifconfig命令,这个命令其实也是读取proc;但是BSD上的ifconfig输出里也没有…… 不过BSD上倒不是没法查流量上,事实上另外有两个命令,在实时观测中更加好用,一个是systat -if 1,几乎就是一个无色版的iptraf;另一个是netstat -idbhI bce0 1。 解释一下,systat是bsd上用来查看系统信息的一个超级利器,-if是-ifstat的简写,类似还有-vmstat等等。netstat是专门用来显示网络状态的,最常用的就是-ant显示所有的TCP链接,这里用的idbhI,表示interface、drop、bytes、human,也就是用方便读取的格式输出某网卡的流量值。 但是这两个命令,都是持续输出,必须接到^C信号才会退出运行。在实时管理时很好用,在做监控脚本的时候,就弄巧成拙了…… 好在netstat参数多,调整一下,使用idbnf参数(family)即可输出网卡总流量值,然后按照linux上一样的思路进行计算了。 最终脚本如下: 继续阅读……


gearman单机试验

18 Mar 2011 Posted in  perl

想把前端缓存几十台服务器的访问日志数据计入数据库中,以便核算各频道带宽。按照一般流量统计的惯例,在服务器上设定crontab每5分钟rotate一次access.log。但是想到一个问题——当A服务器select了数据库里的数据但还没来得及update时,B服务器也开始执行任务select数据来了,最后的结果就不准确了——我相信这个问题对coder来说很低级,不过我是op,搞不来…… 继续阅读……


linux小报错一例

17 Mar 2011 Posted in  linux

需要给某台服务器加内存,准备关机的时候,却一直报错。考虑直接断电危害比较大,还是找找原因,报错如下: shutdown: timeout opening/writing control channel /dev/initctl init: timeout opening/writing control channel /dev/initctl 从messages日志里没有发现任何附加信息。只能求助百度。好在解答很多: 是原有的initscripts和SysVinit找不到了导致的。 传上去initscripts-8.45.19.EL-1.x86_64.rpm和SysVinit-2.86-14.x86_64.rpm两个包,rpm -ivh安装。 重新poweroff还是报错;但强制-f跳过shutdown过程后,成功了。稍后再启动设备,试着再敲一次poweroff,这次就不报错,成功关机了。 继续阅读……


squid/varnish/ats简单测试

15 Mar 2011 Posted in  CDN

简单的试试varnish和apache traffic server。跟squid进行一下对比。 介于varnish和ats都是出现不太久的东西(至少是开源流行不长),选择其最新开发版本测试,正巧都是2.15版。呵呵~ varnish配置文件,只修改了backend到具体某台nginx发布点上。其他都是反向代理缓存的标配。(可参考张宴博客http://blog.s135.com和varnish权威指南http://linuxguest.blog.51cto.com/195664/354889) ats说明更少,从目前的资料看,修改了records.config中的监听,cache.config遵循源站未改,remap.config添加了map一条,绑定域名到同一台nginx上。 注:varnish和ats都没有修改缓存路径,即分别为var/varnish/varnish.cache和var/trafficserver,都是磁盘。 继续阅读……


Facebook运维工程师的一天

03 Mar 2011 Posted in 

原文地址:http://linuxsysadminblog.com/2010/09/a-day-in-the-life-of-facebook-operations/ 顺便说一句,这个linuxsysadminblog.com确实不错。 文章是笔者在现场听Facebook系统工程师汤姆·库克在2010年的surge可扩展和性能大会上的讲演时记录下来的—— 这是到目前为止最火爆的讲座了,还没开始就只剩下点站着的空间…… Facebook运维需要支持多大的应用环境: 1、在facebook花上每个月7亿分钟(不太明白这个意思,一个月明明只有43200分钟) 2、60亿次内容更新; 3、30亿张图片; 4、实现100万连接; 5、5亿活跃用户。 基础设施建设的发展: 1、租用IDC达到瓶颈; 2、开始自建; 3、目前已为加利福尼亚和弗吉尼亚两州服务。 发展历程: 从LAMP起步,然后拆分负载均衡,web服务器,app服务器,memcached,数据库。 最早的Facebook是一个单纯的发布在apache上的php站点。但后来php不足以支持Facebook的访问了,现在,Facebook已经开始编译一些php功能成C++程序,这就是业界闻名的HipHop。 Facebook大概拥有世上最大的memcached集群,超过300TB的数据存储在memcached内存中。 使用flashcache来改善mysql性能。 已实现支持的服务: 新闻feed、搜索、缓存。 服务使用中的编程语言: C++、php(前台)、python、ruby、java、erlang(聊天室) 各种编程语言间如何交互数据?json?soap?都不是。Facebook专用一个为各编程语言开发服务的软件框架。所有的Facebook系统后面,都是统一的一个平台。 Facebook每天都在担心: 开发、监控、数据管理、代码上线。 Facebook使用centos操作系统! 系统管理: 配置管理; 系统管理——用CFengine; 按需管理。 开发: 前台部分——每天都有新代码上线。代码统一协调,所有人都在IRC的频道里交流。每个人都可以知道发生了什么,而不单单是工程师自己。 1、程序推送按需分发; 2、代码分发通过BT的方式; 3、php是经过编译的,数百MB的二进制文件通过极小的BT种子迅速下发; 4、完成全网更新只需要1分钟。 后台部分——只有开发和运维。开发工程师写代码、测试、演示。 1、这样能迅速得到性能数据; 2、揭露各环节的真实交互(这里翻译的应该不对,看不懂……); 3、没有所谓的“提交、退出”; 4、全面参与应用变成产品的过程; 5、运维被“嵌入”每个开发团队。 代码的每一处修改和推送,都必须详细记录。 Facebook的服务器性能指标在线监控 ganglia监控系统:快速、便捷、超过500万的监控指标、可以通过网格和池的方式进行规划。 自主的监控系统 nagios监控系统:用来给各团队发报警,最开始是用的email。 Scribe高性能日志系统:最开始用的是syslogd,同时在用hadoop和hive。 怎么运行的呢: 1、定义要明确的依赖关系; 2、固定的失败次数; 3、服务器是第一步,系统架构设计。 4、现在重点是搞集群。通过功能不同进行逻辑关系划分(web、db、feed等) 5、下一步是数据中心。尤其是灾备。 6、不断的沟通——信息永远在共享中。 7、IRC。 8、大量的自动化数据获取和设置。 9、内部新闻更新。 10、内部工具的’headers’; 11、变更日志。 12、团队要短小精悍。 一个有趣的数字:平均每台Facebook的服务器8分钟就升级一次。 一个有趣的事实:Facebook最忙的时候是万圣节后的那天。 继续阅读……


CU的perl大赛

01 Mar 2011 Posted in  perl

原帖地址:http://bbs.chinaunix.net/thread-1860259-1-1.html 刚看到帖子,试着自己做做,首先必须承认做的过程是重新去翻过资料了…… 继续阅读……


RT故障处理操作一例

24 Feb 2011 Posted in  database

公司RT系统某工单页面无法打开。通过httpwatch发现是图片附件比较大,卡住了页面加载最终导致。 询问当事人后,决定把图片删除掉。 右键菜单查看图片url,是http://rt.domain.com/Ticket/Attachment/123456/654321/12.jpg这样的格式~ 于是在服务器的DocumentRoot下查找相关路径,发现Ticket/Attachment下只有一个文件dhandler,这是一段perl程序。 相关部分如下: 继续阅读……


awk一例

24 Feb 2011 Posted in  bash

一个小需求,某目录下有五万多个模板文件,其中大概两万个是链接文件。当碰到如下情况: lrwxrwxrwx 1 nobody nobody 59 Dec 27 15:06 10000053.mod -> /var/www/html/category/model/10000050.mod 就需要创建同名的另一个模板文件10000053.wap文件,指向10000050.wap。 怎么做? 我用了如下命令: bash ls -l /var/www/html/category/model | awk '$1~/^l/ && $9~ /mod$/ {gsub(/mod$/,"wap",$9);gsub(/mod$/,"wap",$NF);system("rm -f "$9" && ln -s "$NF" "$9)}' 不过从效果来看,使用gsub函数后速度慢了不少,这5万个文件花了几分钟。 继续阅读……


没事试试RH的技能测试

22 Feb 2011 Posted in  linux

上redhat官网看资料的时候想起来上面有RHCE报名前的技能水平测试(用来预估水平,省掉一些基础课程的)。然后做了一下试试。地址如右:http://www.redhat.com/explore/pre-assessment 结果如下: 继续阅读……


浏览器连接数的小区别

19 Feb 2011 Posted in  CDN

读百度UEO博客的文章《浏览器的加载与页面性能优化》,其中关于浏览器对单个域名连接数有一段描述,与一般的概述稍有差别。由此可见像百度这种级别的公司,对性能细节抓到什么程度——让我想起之前在腾讯大讲堂里看到的”页面代码大小要求是MTU倍数”。 继续阅读……


apache的rewrite伪静态化问题一例

16 Feb 2011 Posted in  apache

某应用系统有一个产品翻页浏览,为了利于搜索引擎,准备把/search.html?param=1-2-3-4-5做伪静态化,变成/search/1-2-3-4-5.html的url显示。 继续阅读……


linux内核编译升级

14 Feb 2011 Posted in  linux

N年没更新的ipvsadm终于在今年春节前更新了,正好手头有lvs的任务,赶紧试试。lvs上说的很清楚,ipvsadm的1.2.26版仅工作于linux kernel2.6.28以上版本。所以首先要把现有的2.6.18的linux kernel升级。 继续阅读……


直接操作xen虚拟机镜像的办法

26 Jan 2011 Posted in  cloud

一台xen虚拟机,root密码忘记了,必须进入single模式修改root密码。步骤很熟练,xm shutdown domain && xm create -c domain——但是出问题了——没出现grub的启动界面,直接进入系统启动过程了! 继续阅读……


图片分离小故障一例

20 Jan 2011 Posted in  linux

有需求对某应用的图片和页面内容进行拆分。计划进行的很顺利,存储设备上成功分成了/vol/html和/vol/image,然后分别挂载在应用服务器上发布为html.domain.com和image.domain.com。但在恢复应用运行后出现一个问题:新图片的上传总是提示失败。 继续阅读……


awk的效率

20 Jan 2011 Posted in  bash

偶然和某人谈到日志处理。最简单常见的需求,日志中访问量最大的前十个IP及其访问次数。 继续阅读……


读《基于动态内容的缓存加速技术》笔记

13 Jan 2011 Posted in  CDN

《程序员》2010年11月刊的86-89四页,刊登了F5售前技术顾问,原VIACDN(TOM的CDN部门,后来独立运营)架构师徐超的文章《基于动态内容的缓存加速技术——F5 Web Accelerator产品技术剖析》。 继续阅读……


resin-status

12 Jan 2011 Posted in  monitor

和apache、nginx一样,resin也自带了一个比较简易的status模块,只需要在resin.conf里配置就行了。在里添加如下一段: 继续阅读……


HTTP的auth请求模拟

11 Jan 2011 Posted in  web

开发同事需要在程序中调用一个“安全级别比较高”的url,起初没觉得有啥问题,我们wget或者curl的时候,按照标准url的格式(即’请求方法://用户名:密码@域名/文件路径’)写就完全OK了。不过很快同事转来了报错: 继续阅读……


mysqlreport指南

10 Jan 2011 Posted in  database

mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大的帮助。找了一些mysql的资料,发现大多数是关于php+mysql开发的,服务配置基本就是固定的几条。干脆找上mysqlreport的官网,啃下来这篇指南。翻译都是随着我个人的语言习惯,对直接能用mysql命令上看到结果的英文则保留下来。方便以后查找: 继续阅读……


日志计算(awk进阶)

07 Jan 2011 Posted in  bash

曾经用awk写过一个日志流量计算的单行命令。因为awk中没有sort函数,所以在中途采用了 sort 的方式,导致效率很低。在计算50GB+的日志时,运算时间慢的不可忍受。

设想了很多方法来加快运算,比如舍弃awk改用perl来完成,如下: 继续阅读……


resin与ipv6

30 Dec 2010 Posted in  web

一台nginx+resin的应用服务器出现大量的ipv6下的CLOSE_WAIT。重启后十五分钟就累积到了1500+。 继续阅读……