回答
收藏
分享
举报
nginx 绑定CPU亲缘性出错
提问于2020-09-18 11:31

浏览 1.1k

文章标签

由于服务器是多核处理器,根据型号不同需要作不同的绑定策略,所以想通过配置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


已修改于2023-03-17 02:11



写下您的回答
发表回答
全部回答(2)

按点赞数排序

按时间排序

worker_processes 是用来设置worker进程数量的,auto只是根据CPU核心数来配置worker进程数,它与sched_setaffinity调用,也就是CPU亲和性无关。应该是你的 worker_cpu_affinity指令配错了,你改成worker_cpu_affinity auto;看看

赞同

0

回复举报

回答于2020-10-30 10:46



回复陶辉
回复

这个不是ERROR级别哈,属于:alert[污]

赞同

0

回复举报

回答于2020-10-21 11:02



回复baru
回复
提问者
Missa
这家伙很懒还未留下介绍~
0
文章
1
问答
0
粉丝
相关问答

介绍在nginx中自定义请求头字段,并在日志中展示相关字段的值: 

第一种方法: 

1 在代理nginx服务器配置中增加两个proxy_set_header字段,一个iden,一个age,分别赋值为"student","21",我们将来在日志中看到这两个常量;

server {

    server_name 127.0.0.1;

    listen 80;

    location /header {

        default_type "text/plain";

        access_log /data/nginx/log/proxy_header.log api;

        proxy_redirect     off;

        proxy_set_header   iden    "student";

        proxy_set_header   age     "21";

        proxy_set_header   Host    $host;

        proxy_pass http://127.0.0.1:88;

     } 

}

此时代理nginx将请求头重写,传入后端服务器,所以在此nginx服务器日志上看不到相关字段信息,为了演示方便,将此服务转发到同机器88端口的服务上;


2 配置后端服务相关配置:端口号88,返回200;

server {

    server_name 127.0.0.1;

    listen 88;


    location / {

        access_log /data/nginx/log/proxy_header.log api;

        proxy_redirect     off;

        proxy_set_header   Host    $host;

        default_type "text/plain";

        return 200 "OK";

    }

}


3 在 api的log_format中,增加两个字段;

"$http_iden" "$http_age"


4 curl 测试接口;

curl http://127.0.0.1/header


5 查看日志;

image.png

发现第一条日志记录有相关字段信息,是后端nginx服务的日志信息;第二条日志无字段相关信息,是代理nginx服务器的日志;


结论:使用proxy_set_header自定义字段时,后端服务器日志能获取到自定义的相关信息;


第二种方法:

1 在代理nginx服务器中配置set 关键字,定义两个字段,同样转发到统计器的88端口;

server {

    server_name 127.0.0.1;

    listen 80;

    location /header {

        set $iden "student";

        set $age "21";

        default_type "text/plain";

        access_log /data/nginx/log/proxy_header.log api;

        proxy_redirect     off;

        proxy_set_header   Host    $host;

        proxy_pass http://127.0.0.1:88;

    }


}


2 配置后端服务相关配置:端口号88,返回200,与第一种方法保持一致;

server {

    server_name 127.0.0.1;

    listen 88;


    location / {

        access_log /data/nginx/log/proxy_header.log api;

        proxy_redirect     off;

        proxy_set_header   Host    $host;

        default_type "text/plain";

        return 200 "OK";

    }

}


3 修改api的log_format中的两个字段;

"$iden" "$age"


4 curl 测试接口;

curl http://127.0.0.1/header


5 查看日志;

image.png

发现第一条日志记录无相关字段信息,是后端nginx服务的日志信息;第二条日志有字段相关信息,是代理nginx服务器的日志;

点赞 0
浏览 2.8k

没看明白,描述详细点呢?

点赞 0
浏览 1k

可以这么进行调试:
1. error_log 等级设置为 debug
2. 在日志中找到“http init upstream“的字样,然后往下找会看到nginx想后端发送的http请求,可以从这个请求构造curl命令直接访问后端进行查看该资源是啥样的情况

点赞 0
浏览 1.5k