Nginx PHP-FPM的问题

时间:2015-06-24 10:53:45

标签: php nginx

我们最近从apache迁移到了nginx。

OS - CetnOS 6
Nginx - 1.62 (4 CPU 8 GB RAM)
PHP-FPM (php 5.4.37) (4 CPU 8 GB RAM)
APC (Code Cache APC 3.1.13 beta)
Memcache (data cache)
Soft File Limit - 300000 (/etc/security/limits.conf)
Hard File Limit - 300000

根据建议修改了sysctl TCP配置。

我有4个php服务器的上游用于php-fpm服务。

我面临两个问题:

  1. 我在访问日志中获取502状态代码意味着nginx生成502错误网关错误

  2. 随机连接在nginx上堆积到2500,在php-fpm服务器上我们没有看到任何负载在顶部只有1-2个进程似乎在那段时间内正在运行并且没有在2之后重新启动3分钟它开始正常工作,连接恢复正常而不重新启动。

  3. 请在线查看nginx配置

    user nguser;
    worker_processes 4;
    
    pid /var/run/nginx.pid;
    worker_rlimit_nofile 70000;
    
    events {
    worker_connections 1024;
    multi_accept on;
    use epoll;
    }
    
    http {
    ##
    # Basic Settings
    ##
    
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_requests 1000;
    keepalive_timeout 65;
    send_timeout 15;
    types_hash_max_size 2048;
    server_tokens off;
    client_max_body_size 50M;
    client_body_buffer_size 1m;
    client_body_timeout 15;
    client_header_timeout 15;
    server_names_hash_bucket_size 64;
    server_name_in_redirect off;
    
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    
    ##
    # Logging Settings
    ##
    #access_log on;
    
    access_log /var/log/nginx/access.log combined;
    #error_log /dev/null crit;
    error_log /var/log/nginx/error.log error;
    
    
    #gzip on;
    gzip on;
    gzip_static on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_min_length 512;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/css text/javascript text/xml text/plain text/x-component
    application/javascript application/x-javascript application/json
    application/xml application/rss+xml font/truetype application/x-font-ttf
    font/opentype application/vnd.ms-fontobject image/svg+xml;
    
    open_file_cache max=2000 inactive=20s;
    open_file_cache_valid 60s;
    open_file_cache_min_uses 5;
    open_file_cache_errors off;
    
    fastcgi_buffers 256 16k;
    fastcgi_buffer_size 128k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_intercept_errors on;
    reset_timedout_connection on;
    
    upstream fastcgiservers {
    least_conn;
    server xxx.xxx.xx.xx:9000;
    server xxx.xxx.xx.xx:9000;
    server xxx.xxx.xx.xx:9000;
    server xxx.xxx.xx.xx:9000;
    }
    
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    }
    
    location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_pass fastcgiservers;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
    

    ----------------------------------------------- ---------- PHP-FPM设置------------------------------------ ------------------------------

    pm.max_children = 150
    pm.start_servers = 90
    pm.min_spare_servers = 70
    pm.max_spare_servers = 100
    pm.max_requests = 1500
    

    非常感谢任何帮助或建议。

    由于

1 个答案:

答案 0 :(得分:0)

删除并替换为

    fastcgi_buffers 256 16k;
fastcgi_buffer_size 128k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_intercept_errors on;
reset_timedout_connection on;

upstream fastcgiservers {
least_conn;
server xxx.xxx.xx.xx:9000;
server xxx.xxx.xx.xx:9000;
server xxx.xxx.xx.xx:9000;
server xxx.xxx.xx.xx:9000;
}

替换这种方式

server {
  location / {
    proxy_pass  http://backend;
  }
}

upstream backend  {
  server backend1.example.com;
  server backend2.example.com;
  server backend3.example.com;
}