1、cpu占比与惊群
top -p xxxx
当cpu有多个核的时候,每个cpu都有百分之百。
惊群:所有worker进程能感知到80端口的连接。但是只有一个worker进程调用accept成功。其它进程都做了无用功。这是操作系统的缺陷。
epoll_wait都会返回,
官方的nginx,四个worker进程争抢一个锁,只有抢到锁的worker进程才把可读标记放入红黑树中去。但这种方式是否也惊群了?
linux3.9版本以上内核据说解决了惊群的问题,性能比ngx效率高很多。
怎么解决的呢?复用端口。允许将多个套接字band到同一个ip地址端口上。这样就可以建立多个服务器来接收到同一个端口的连接。
REUSEPORT测试发现不生效。
课后作业:
listen能不能放到worker进程中。这样每一个worker都有一个不同的listen的sockid。
观察是否能解决惊群问题。
master的监听套接字可以关闭掉。
很多套接字配置项可以通过setsockopt来配置。
还有一些tcp/ip协议的配置项可以通过修改配置文件来生效。
2、性能优化大局观
充分利用cpu;
深入了解tcp/ip;
业务逻辑性能;
硬件;高速网卡、主板、总线。
3、性能优化的实施
3.1、绑定cpu、提升进程优先级
绑定cpu:一个worker进程运行在一个核上。自己研究。
提升进程优先级:setptiority()
3.2、TCP/IP协议的配置选项
3.3、TCP/IP协议额外注意的一些算法、概念等
4、配置最大允许打开的文件句柄数
5、内存池补充说明
网友评论