java性能之IO瓶颈

IO会产生瓶颈, 但是我从来没有遇到过这种情况, 或者说遇到了也没注意, 之所以写这篇文章, 是回忆6月份的时候和朋友的交流。

朋友是个个人站长, 他的站数据量已经达到2000w+, 一个2g内存、双核cpu的小鸡(vps)上丢了十多个站, 某日, 朋友发现网站打开速度很慢, 于是各种查, 从cdn一直查到tomcat上, 最终发现是我的采集器太强大了。。。给他的小鸡造成了非常高的IO输入输出。

因为是个小说站, 采集的小说内容只能存为文件, 所以采集器必须不断的进行写文件操作, 同时网站流量、爬虫也在不断的产生读文件操作, 所以IO操作高峰一直持续, 无法降低。

最终朋友采用的解决方案是将数据库和数据文件独立出来, 放到另外一台vps上, 放置web应用的vps, 加载网络磁盘, 以本地调用的方式读文件。

这里总结下查看IO瓶颈的方法, 以备日后工作的不时之需。

1. vmstat

对于查看IO性能来说, 主要查看的就是si、so、bi、bo四列。如果不清楚vmstat命令的输出结果和每列含义的话, 请查看http://my.oschina.net/xiaoqqq/blog/384487

2.pidstat -d -t -p pid

输出结果如下:


02:10:46 AM      TGID       TID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
02:10:46 AM      1642         -      1.61      2.70      0.00  java
02:10:46 AM         -      1642      0.00      0.00      0.00  |__java
02:10:46 AM         -      1643      0.00      0.00      0.00  |__java

其中kB_rd/s、kB_wr/s分别表示每秒读入和写出的kB数。

3. iostat

直接在shell中输入iostat, 显示如下:

[root@v157-7-222-144 ~]# iostat
Linux 2.6.32-504.el6.i686 (v157-7-222-144.myvps.jp) 	03/10/2015 	_i686_ (3 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          97.28    0.00    0.82    0.00    1.41    0.48

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
vda              10.73       234.50        89.18  629319612  239342458
vdb               2.83        49.47        16.55  132766010   44410992
dm-0             16.65       233.73        87.76  627250202  235532832
dm-1              0.27         0.77         1.42    2063432    3809600
iostat只能显示整个系统的io情况, 不能跟踪具体进程。

tps表示每秒的IO请求数、Blk_read/s表示每秒读入的块数量、Blk_wrtn/s写出的块数量、Blk_read读入的块总量、Blk_wrtn写出的块总量。


转载于:https://my.oschina.net/xiaoqqq/blog/384576

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值