环境描述:测试环境LNMP 因为后端是php编写,所以在nginx 配置文件里
upstream common{
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
客户端发现两个接口一个一直再报502,一个再报502和500 .然后就开始排查开发模式的DBUG
发现的确存在500现象,但是没有产生502的问题。
然后就怕查到nginx 错误日志里面显示:
[error] 7098#7098: *1537 no live upstreams while connecting to upstream
好像是后端程序时断时好。但是很奇怪,好多测试环境同样的配置文件都没问题
然后参考了
https://blog.51cto.com/xiaosu/1689992 文章发现后端会话的问题。
因为后端的开发没有让我负责测试环境的nginx配置文件的添加
排查配置文件发现
location ~ .php$ {
expires 60s;
fastcgi_pass common;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
文件编写根据nginx提示负载均衡错误发现nginx配置文件存在一定的问题。为了验证我自己的想法更改了。nginx 配置文件如下:
location ~ .php$ {
expires -1;
#fastcgi_pass common;
fastcgi_pass 127.0.0.1:9002;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
#fastcgi_cache ngx_fcgi_cache;
fastcgi_cache_valid 200 302 5m;
fastcgi_cache_valid 301 5m;
fastcgi_cache_valid any 1m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache_min_uses 1;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_cache_key "$scheme$request_method$request_uri";
}
通过测试发现502问题没有在现。然后500问题提交给后端开发同事解决
1.no live upstreams while connecting 表示后端请求无响应,看下你的php是否设置的是静态的。建议改成动态增加相应的线程数
2.mysql相应超时。数据库连接数过多也会no live upstreams while connecting后端无响应。需排查相应的慢sql和mysql连接数。是否是一条或者多条sql 拖垮了整个