C10K问题及NIO精讲和IO模型性能压测

http://www.kegel.com/c10k.html (opens new window)

查看路由表

route -n
route add -host 192.168.110.100 gw 192.168.150.1
1
2

windows 虚拟机 VMware NAT Service

BIO

  • BIO弊端
  • 阻塞 accept recv
  • 不阻塞只有抛线程
  • 因为阻塞才要抛出线程,才能满足一个服务端接受更多的客户端去处理

NIO

  • JDK nio -> new io
  • OS nio -> NONBLOCKING IO
  • 优势:
    • 可以用1个或者多个线程解决IO连接处理问题
  • 问题:
    • 单线程模型 accept recv 不阻塞 循环系统调用
    • O(n)复杂recv 很多调用无意义,浪费的(调用:计组:系统调用)

追踪系统调用

# 编译 追踪
javac SocketNIO.java && strace -ff -o out java SocketNIO
1
2

ulimit 单个进程可以创建文件描述符

ulimit -a
ulimit -SHn 65535
cat /etc/security/limits.conf
1
2
3

整个内核可以创建最多文件描述符

# 由内核估算,1G大概10万文件描述符
cat /proc/sys/fs/file-max 
382467

cat /etc/security/limits.conf 

lsof -op pid 
netstat -natp
1
2
3
4
5
6
7
8
总字数: 272 字  上次更新: 2023-03-14 00:25:11