关于开启负载均衡检查导致php-fpm进程cpu占用升高的一次记录
钉钉发现告警信息
sdk-10heroes这台机器负载突然升上来了,然后我们通过命令top发现cpu占用高的都是php-fpm进程,我们用到php-fpm也就是和nginx关联的访问业务,所以我们打开sdkadminapi nginx配置文件
cat /etc/nginx/sites-available/sdkadminapi.10heroes.cn.conf
sdkadminapi nginx配置如下
server {
listen 9999;
listen 80;
listen 443 ssl;
server_name sdkadminapi.10heroes.cn;
root /var/www/sdkadminapi.10heroes.cn/public;
proxy_connect_timeout 600s;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
index index.php index.html index.htm;
ssl_certificate /etc/nginx/sites-available/keys/8057388_sdkadminapi.10heroes.cn.pem;
ssl_certificate_key /etc/nginx/sites-available/keys/8057388_sdkadminapi.10heroes.cn.key;
access_log /data/logs/nginx/access_sdkadminapi.log nbwl_access;
error_log /data/logs/nginx/error_sdkadminapi.log;
location / {
try_files $uri $uri/ =404 /index.php$is_args$args;
}
# error_page 404 /404.html;
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# root /usr/share/nginx/html;
# }
# location ~ .php$ {
# try_files $uri =404;
# fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# include fastcgi_params;
# }
location ~ .php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
找到了access_log配置项
/data/logs/nginx/access_sdkadminapi.log,打开这个日志文件后发现都是报的这个SLB CHECK访问
因为我们刚将sdkadmin.10heroes.cn和sdkadminapi.10heroes.cn业务切到alb上并且配置了健康检查,健康检查规则配置如下:
这个检查规则大致意思就是每隔2秒钟向sdkadminapi.10heroes.cn/ 发起head请求,根据返回状态码是否是2xx来判断是否健康,根据sdkadminapi nginx配置 项我们知道当访问location 路径为/ 时,默认跳到主页index.php上,那么就会调用一次
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 如此对php-fpm进程压力一下子就大了起来了,为了不消耗php-fpm资源,我们直接添加一个location 使其访问一个静态资源,而不会直接再调用php-fpm.sock,添加配置如下:
location /status {
root /var/www/slb_check;
index index.html index.htm;
}
配置完后记得重新加载nginx。完事后我们修改slb健康检查,将健康检查路径修改成/status就可以了
修改完成后,负载马上就降下来了
总结下:一般我们在配置负载均衡的时候,如果选择开启了健康检查,一般都是业务方提供一个接口给我们,这个接口频繁请求不会太消耗资源的那种,我们配置健康检查的时候给加上,如果没有的话,健康检查开启配置一定要谨慎,不然很容易将我们的服务器和业务给搞挂掉
服务器租用托管,机房租用托管,主机租用托管,https://www.e1idc.com