java io瓶颈_java性能之IO瓶颈

本文讲述了因采集器导致服务器出现高IO输入输出的问题及解决方案。通过将数据库和数据文件独立部署并使用网络磁盘,有效降低了IO瓶颈。同时介绍了几种常用的监控IO性能的工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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写出的块总量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值