浏览 4.5k
由于服务器是多核处理器,根据型号不同需要作不同的绑定策略,所以想通过配置worker_processes auto;来自动绑定CPU亲缘性。却提示指令错误。
2020/09/18 11:18:34 [alert] 12220#12220: sched_setaffinity() failed (22: Invalid argument)
nginx版本:1.15.8
linux内核版本:3.16.35
简言之,就是内核将Socket缓冲区情况通知给用户态进程的接口。概括为以下4点:
1、TCP由内核实现的,epoll是内核提供给应用进程的接口;
2、当TCP连接需要发送数据时,Socket缓冲区上必须有空闲位置。内核接收到对方的ACK报文,才能释放掉发送报文(否则要反复重发),产生空闲位置。
3、当TCP连接需要接收数据时,必须是Socket缓冲区上已经有数据了,否则read函数就会阻塞。epoll_wait可以完成2、3两个步骤(包括三次握手)的通知。
4、当你就某个TCP连接需要接收内核通知时,通过epoll_ctl函数告诉内核即可。
ticket已经明确地表明了NGINX开发团队的态度,不支持环境变量实现正向代理,可以尝试使用stream配置proxy_pass转发数据,不过解决方案就不是那么简单了。
微信公众号
加入微信群