本次测试用的是center os7/64,jdk版本jdk1.8.0_261。
测试系统调用,最简单的代码就是IO。
代码:
import
具体命令:
编译:
/
执行的时候使用:
strace -ff -o out /usr/local/java/jdk1.8.0_261/bin/java SocketTest
这样执行完毕之后我们会看到一堆文件
使用vi打开68397,这儿我是猜的,因为这个文件比较大
通过/9990搜索
我们以可以通过查看网络来看当前程序监听状态
查看java进程:jps
查看网络链接状态:netstat -natp
我们使用命令:nc localhost 9990链接服务端
然后再查看日志文件和网络监听
很明显多了70开头的日志文件
如果想查看Linux里面某个方法代表啥意思,可以如下操作:
[
也可以监控文件
[
java NIO系统底层实现
代码:
import
日志文件分析
2830
从上面的截图日志我们可以看出,我们大量的系统调用,假设我们有10000个客服端和服务端链接,只有其中几个和服务端在传输数据,但是却产生了大量的系统调用,严重影响性能,就像收费站员工,假设有1000条路,收费站员工来回跑看那条路有车来了,这个人会被累死。
此时就需要另外一个东西来帮助解决这个问题,那就是多路复用器
查看说明:
[
epoll,多路复用器
package
c10k问题
http://www.kegel.com/c10k.html