java Http项目性能分析优化 案例一

场景:http客户端请求,服务器响应时长很长,进入controller日志也未打印。服务端java项目,Linux服务器部署

1、分析服务器磁盘是否有瓶颈

监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况
	#pidstat 需要安装,无法连外网可能无法用
	pidstat -d -p 替换成实际进程号 1 3
在Debian/Ubuntu系统中可以使用下面的命令来安装:      apt-get install sysstat
CentOS/Fedora/RHEL版本的linux中则使用下面的命令:  yum install sysstat

pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]
-u:默认的参数,显示各个进程的cpu使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
-p:指定进程号
-w:显示每个进程的上下文切换情况
-t:显示选择任务的线程的统计信息外的额外信息
-T { TASK | CHILD | ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析。
-I:在SMP环境,表示任务的CPU使用率/内核数量
-l:显示命令名和所有参数

2、分析当前处理的业务数量

获取当前连接数,将实时数据生成到"/root/a.txt "文件

netstat -napt >/root/a.txt  

排除一下是否是业务量突增,导致的单节点无法负荷,进行多节点部署。

3、分析连接的保持时长
a.txt中随机选择几个端口号

lsof -p 替换成实际进程号| grep 端口号

端口号:是第二步中的任意一个端口号

 #  lsof  -p 13388 | grep 29526

-- snipped --
 java  13388 root  328u	IPV6	12235791	TCP ****03:20007->10.158.244.18:29526 (ESTABLISHED)

查看连接的创建时间

ll  /proc/{
   
   pid}/fd/{
   
   fd}
#{fd} lsof -p 第四列的值
ll  /proc/13388/fd/328
lrwx------ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值