相关疑难解决方法(0)

需要将 nginx 吞吐量增加到上游 unix 套接字——Linux 内核调整?

我正在运行一个 nginx 服务器,它充当上游 unix 套接字的代理,如下所示:

upstream app_server {
        server unix:/tmp/app.sock fail_timeout=0;
}

server {
        listen ###.###.###.###;
        server_name whatever.server;
        root /web/root;

        try_files $uri @app;
        location @app {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_pass http://app_server;
        }
}
Run Code Online (Sandbox Code Playgroud)

一些应用服务器进程反过来在请求/tmp/app.sock可用时将其拉出。此处使用的特定应用服务器是 Unicorn,但我认为这与此问题无关。

问题是,似乎超过一定量的负载后,nginx 无法以足够快的速度通过套接字获取请求。我设置了多少个应用服务器进程并不重要。

我在 nginx 错误日志中收到了大量这些消息:

connect() to unix:/tmp/app.sock failed (11: Resource temporarily unavailable) while connecting to upstream
Run Code Online (Sandbox Code Playgroud)

许多请求会导致状态代码 502,以及那些不需要很长时间才能完成的请求。nginx 写入队列统计数据徘徊在 1000 左右。

无论如何,我觉得我在这里遗漏了一些明显的东西,因为 nginx 和应用程序服务器的这种特殊配置非常普遍,尤其是对于 Unicorn(实际上这是推荐的方法)。是否有任何需要设置的 linux 内核选项,或者 nginx 中的某些内容?关于如何增加上游套接字的吞吐量的任何想法?我显然做错了什么?

关于环境的其他信息:

$ uname -a
Linux …
Run Code Online (Sandbox Code Playgroud)

linux tuning nginx socket unicorn

29
推荐指数
2
解决办法
3万
查看次数

php-fpm.sock 连接到上游时失败(11:资源暂时不可用)

当我每秒测试 200 次点击时,我的网站上出现了以下错误。

首先我收到了 499 个错误

2017-04-09 03:22:45 错误 162.158.79.219 499 GET/HTTP/1.1 0 nginx 访问

2017-04-09 03:22:45 错误 162.158.79.87 499 GET/HTTP/1.1 0 nginx 访问

2017-04-09 03:22:45 错误 162.158.78.170 499 GET/HTTP/1.1 0 nginx 访问

2017-04-09 03:22:45 错误 162.158.78.68 499 GET/HTTP/1.1 0 nginx 访问

第二个错误开始显示 502

2017-04-09 03:22:45 错误 162.158.79.135 502 GET / HTTP/1.1 166 nginx 访问

2017-04-09 03:22:45 错误 162.158.79.225 502 GET / HTTP/1.1 166 nginx 访问

2017-04-09 03:22:45 错误 162.158.78.110 502 GET/HTTP/1.1 166 nginx 访问

2017-04-09 03:22:45 错误 162.158.79.225 502 …

nginx php-fpm centos7

12
推荐指数
3
解决办法
5万
查看次数

使用 Nginx 和 PHP-FPM 后,请求永远不会在 pm.max_children 之后排队

一旦池达到 pm.max_children,Nginx 就会在尝试向 PHP-FPM 发送新请求时开始超时。“最大侦听队列”在 php-status 页面中始终为 0。

  • PHP-FPM 5.5.16
  • nginx 1.6.1

以下是 php-fpm 池的示例:

[example]

catch_workers_output = no

; Configure listener
listen = /var/run/php-fpm/example.sock
listen.backlog = 65535
listen.owner = nginx
listen.group = nginx

; Unix user/group of processes
user = nginx
group = nginx

; Choose how the process manager will control the number of child processes.
pm = ondemand
pm.max_children = 10
pm.max_requests = 200
pm.process_idle_timeout = 30s
pm.status_path = /status

; Pass environment variables
env[HOSTNAME] = $HOSTNAME …
Run Code Online (Sandbox Code Playgroud)

php nginx php-fpm max-requests pool

8
推荐指数
1
解决办法
2190
查看次数

11:资源暂时不可用,连接upstream + Bad Gateway (Nginx)

对于我的新服务器上的所有站点,似乎一旦nginx提供了一定数量的流量,它就会开始提供“错误 502 - 错误网关! ”。

让我们来看看一些日志和配置...

  • 操作系统:Ubuntu 16.04(服务器)

  • 硬件:6核,12GB内存

  • 面板:ISPConfig

  • nginx 版本:1.10.3

来自/var/www/example/log/error.log

11: Resource temporarily unavailable) while connecting to upstream, client: 216.170.123.179, server: example.com, request: "GET /KHFxygk9 HTTP/1.1", upstream: "fastcgi://unix:/var/lib/php7.0-fpm/web3.sock:", host: "example.com", referrer: "http://example.com/"
2017/08/10 06:01:06 [error] 15408#15408: *31372 connect() to unix:/var/lib/php7.0-fpm/web3.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 192.3.114.12, server: example.com, request: "GET /jiPNQjwp HTTP/1.1", upstream: "fastcgi://unix:/var/lib/php7.0-fpm/web3.sock:", host: "example.com", referrer: "http://example.com/"
Run Code Online (Sandbox Code Playgroud)

这是我的配置文件:

  • /etc/php/7.0/fpm/pool.d/www.conf

[www]    
user = …
Run Code Online (Sandbox Code Playgroud)

linux http nginx php-fpm php7

6
推荐指数
2
解决办法
2万
查看次数

标签 统计

nginx ×4

php-fpm ×3

linux ×2

centos7 ×1

http ×1

max-requests ×1

php ×1

php7 ×1

pool ×1

socket ×1

tuning ×1

unicorn ×1