java客服系统_如何追踪java系统调用的过程?

该博客探讨了在Java中进行系统调用时遇到的性能问题,特别是在大量客户端连接场景下。作者通过strace分析了一个简单的Socket测试程序,发现大量系统调用导致效率低下,比喻为收费站员工频繁检查车辆。为了解决这个问题,引入了多路复用器,如epoll,以提高并发性能。文章引用了C10K问题作为背景,并建议使用多路复用技术来优化服务器处理大量连接的能力。
摘要由CSDN通过智能技术生成

7fb25476c46e4da6a91814b165940cc1.png

本次测试用的是center os7/64,jdk版本jdk1.8.0_261。

测试系统调用,最简单的代码就是IO。

e13a9077ce9ae3e3c6e1961697aa56e4.png

代码:

import 

具体命令:

编译:

/

执行的时候使用:

strace -ff -o out /usr/local/java/jdk1.8.0_261/bin/java SocketTest

这样执行完毕之后我们会看到一堆文件

65f70b1aa85729f6825e3dd5ffadf23c.png

使用vi打开68397,这儿我是猜的,因为这个文件比较大

通过/9990搜索

819c322c69a6e59c756ea8dbdfc92647.png

我们以可以通过查看网络来看当前程序监听状态

查看java进程:jps

查看网络链接状态:netstat -natp

10aa206d82ed379d15bd5556a28cc7b1.png

我们使用命令:nc localhost 9990链接服务端

然后再查看日志文件和网络监听

ef0df3b0c900e70118bc4a196104fc8a.png

很明显多了70开头的日志文件

如果想查看Linux里面某个方法代表啥意思,可以如下操作:

[

也可以监控文件

[

java NIO系统底层实现

e42983c50a31b2636e6d4e64f5653e58.png

代码:

import 

日志文件分析

2830 

从上面的截图日志我们可以看出,我们大量的系统调用,假设我们有10000个客服端和服务端链接,只有其中几个和服务端在传输数据,但是却产生了大量的系统调用,严重影响性能,就像收费站员工,假设有1000条路,收费站员工来回跑看那条路有车来了,这个人会被累死。

此时就需要另外一个东西来帮助解决这个问题,那就是多路复用器

8b60cf63705625a6fb9bb9681fbba7d2.png

查看说明:

[

epoll,多路复用器

package 

b0d0aa4052d749edddc42077f04e2d82.png

afd46df6ccd3bb370f1341c548986f9c.png

45e66a9b993ad7f8544801d8fe68737c.png

c10k问题

http://www.kegel.com/c10k.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值